İpinUcu ~ 100 – WPF’te Height-Width vs ActualHeight-ActualWidth

Öncelikle WPF ile ilgili 100. ipucumuz Türkçemize hayırlı olsun ^^

WPF’te bildiğiniz üzere width yada height özelliklerine değer girmek zorunda değiliz. Örneğin bir WrapPanel’in içine iki tane TextBlock koysak ve birkaç satır yazı yazsak pencerenin boyutuyla birlikte bu textler de büyüyecek (aslında doğrudan WrapPanel textleri de büyütemiyor. ViewBox kullanılmalı :)) Dönelim konuya:

<StackPanel>

<Button Content="Mehmet KAPLAN" HorizontalAlignment="Stretch"  />

</StackPanel>

Biz bu XAML kodlarıyla uygulamamızı çalıştırdığımızda Window’un height ve width bilgileriyle birlikte button şekil alacak. Peki bu width ve height’e kod tarafında ihtiyacımız olursa? Eğer buttonun kod tarafında witdh ve heighte bakmak isterseniz NaN olarak göreceksiniz. WPF’te bu bilgiler Witdh ve Height verilmemişse ActualHeight ve ActualWidth adı altında tutuluyor ve değerler Layout yüklendikten sonra değişiyor. Elbette bu özellikler de double türünde.

Umarım bir işinize yarar ^^

İpinUcu ~ 99 – WPF’te Kayan Yazı Animasyonu (marquee – scroll text)

Nedendir bilmem halen güzeller güzeli WPF’in animasyon olanaklarına alışamadık, ısınamadık ve bununla ilgili var denecek kadar bile kaynak oluşturamadık. Neyse ki dünyanın bir yerlerinde insanlar halen yaptıkça paylaşıyorlar 🙂

Doğrudan kayan yazı için XAML’a bakıyoruz:

<StackPanel Orientation=”Horizontal” Margin=”0,0,0,0″>

    <StackPanel.RenderTransform>
        <TranslateTransform x:Name="transferText" X="-40"/>
    </StackPanel.RenderTransform>
    <StackPanel.Triggers>
        <EventTrigger RoutedEvent="StackPanel.Loaded">
            <BeginStoryboard>
                <Storyboard>
                    <DoubleAnimation From="0" To="-900" Duration="00:00:10"
                      Storyboard.TargetProperty="X"
                      Storyboard.TargetName="transferText"
                      RepeatBehavior="Forever"/>
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </StackPanel.Triggers>
    <TextBlock FontSize="25"  x:Name="txtKron" Margin="10,0,7,0"/>
</StackPanel>

Böylece StackPanel içinde yer alan TextBlock ve daha niceleri kayıp gidecektir 🙂

Bu animasyon bir kenarda dursun. Şimdi bu kaydırma işlemi sırasında diyelim ki yazının bir kısmı kayboldu ve kaybolan kısım arkasından çıkıp gelsin istiyoruz. Yani Nokia’nın meşhur kara yılanı gibi 🙂

Buyrun:

XAML

<Window x:Class="WpfApplication9.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:WpfApplication9"
        Title="MainWindow" Height="83" Width="222" Name="UI" Tag="Tol Level">
    <StackPanel Orientation="Horizontal" x:Name="stack">
        <StackPanel.Resources>
            <local:NegatingConverter x:Key="NegatingConverter" />
            <Storyboard x:Key="slide">
                <DoubleAnimation From="0" To="{Binding Width, ElementName=canvas, Converter={StaticResource NegatingConverter}}" Duration="00:00:10"
                      Storyboard.TargetProperty="X"
                      Storyboard.TargetName="transferCurreny"
                      RepeatBehavior="Forever"/>
            </Storyboard>
        </StackPanel.Resources>
        <StackPanel.RenderTransform>
            <TranslateTransform x:Name="transferCurreny" X="0"/>
        </StackPanel.RenderTransform>
        <StackPanel.Triggers>
            <EventTrigger RoutedEvent="StackPanel.Loaded">
                <BeginStoryboard Storyboard="{StaticResource slide}" />
            </EventTrigger>
            <EventTrigger RoutedEvent="StackPanel.SizeChanged">
                <BeginStoryboard Storyboard="{StaticResource slide}" />
            </EventTrigger>
        </StackPanel.Triggers>
        <Canvas x:Name="canvas" Width="{Binding ActualWidth, ElementName=stack}">
            <TextBlock Text="StackOverflow" FontSize="25"  x:Name="txtKron" Canvas.Left="0"/>
            <TextBlock Text="{Binding Text, ElementName=txtKron}" FontSize="25" Canvas.Left="{Binding Width, ElementName=canvas}"/>
        </Canvas>
    </StackPanel>
</Window>

C#

public class NegatingConverter : IValueConverter
    {

        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value is double)
            {
                return -((double)value);
            }
            return value;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value is double)
            {
                return +(double)value;
            }
            return value;
        }
    }

Lütfen c# kodlarını namespace’in altında tutunuz. Sınıfın altında oluşturursanız olmayacaktır.

Yılan örneği için teşekkürler; http://stackoverflow.com/questions/15323163/wpf-marquee-text-animation

Kolaylıklar diliyorum.

İpinUcu ~ 98 – WPF Window’da Simge Durumuna Küçültme, Ekranı Kaplama ve Kapatma Butonlarını Gizlemek

Merhabalar!

Uzuun bir aradan sonra WPF ile haşır neşir olmam gerekti ve bu süreçte WPF’in hali hazırda bize sunmadığı ama sınırları zorlayarak yapabileceğimiz birkaç özelliği gerekti. Bunlardan bir tanesi close, maximazed ve minimized buttonlarını gizlemek!

Bunun için söz konusu formun C# tarafında şu eklemeyi yapıyoruz:

private const int GWL_STYLE = -16;
private const int WS_SYSMENU = 0x80000;
[DllImport(“user32.dll”, SetLastError = true)]
private static extern int GetWindowLong(IntPtr hWnd, int nIndex);
[DllImport(“user32.dll”)]
private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);

Window_Loaded olayına da şunları ekliyoruz:

var hwnd = new WindowInteropHelper(this).Handle;
SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~WS_SYSMENU);

Bu yazdığım kodlar şu kütüphanelere ihtiyaç duyacağından otomatik olarak sunmazsa diye paylaşıyorum:

using System.Windows.Interop;

using System.Runtime.InteropServices;

Yazdığımız kodlar yalnızca sağ üst köşedeki butonları kaldırdığından doğal olarak kenarlıkların da (border) kalkmasını isteyebiliriz. Bunun için XAML tarafında Window’un WindowsStyle özelliğini None yapıyoruz.

XAML

 WindowStyle=”None”

Böylece güle güle kullanabiliriz. ^^

Kaynaklar: http://stackoverflow.com/questions/743906/how-to-hide-close-button-in-wpf-window

http://winsharp93.wordpress.com/2009/07/21/wpf-hide-the-window-buttons-minimize-restore-and-close-and-the-icon-of-a-window/

.NET Framework 4.5 Yenilikleri

Ne yazık ki uzun süredir tüm dünyada yazılımsal gelişmeler, haberler ve paylaşımlar durma noktasına geldi. Bu süreçten elbette ülkemiz de nasibini aldı. Genellikle diğer Türk yazılımcılarla bol bol irdelenen Framework yenilikleri bu rehavetten etkilenmiş olacak ki pek Türkçe kaynak bulamadım. Bu işi de ben yükleneyim dedim. Bu yüzden .NET Framework 4.5 yeniliklerini mümkün olduğunca anlamaya ve incelemeye çalışıp fırsat buldukça yazmaya çalışıyor olacağım.

Windows Market Yenilikleri

Taşınabilir Sınıf Kütüphaneleri

Yapısal (çekirdekte) Yeni Özellikler ve Geliştirmeler

Web Tarafında Geliştirmeler

Ağ (network) Tarafında Gelişmeler

WPF’teki Yenilikler

WCF’teki Yenilikler

WF’teki Yenilikler

İpinUcu ~ 99 – WPF’te GridSplitter Kullanımı

WPF’te GridSplitter Kullanımı için öncelikle WPF’teki Grid’i anlamak gerek. Konuyla ilgili gerekli bilgiye wpftutorial’dan ulaşabilirsiniz: http://www.wpftutorial.net/GridLayout.html

Ayrıca takiben aşağıdaki bağlantılardan da yararlanarak GridSplitter’ın hakkını verebilir hale gelebilirsiniz =]

http://wpf.2000things.com/2011/12/23/457-use-a-gridsplitter-to-let-a-user-change-row-or-column-size-in-a-grid/

http://www.ehow.com/how_4546867_use-gridsplitter-wpf.html

http://www.youtube.com/watch?v=hKZKbPrNL8w

 

İpinUcu ~ 98 – WPF & Silverlight Animasyon Örnekleri 7

WPF ve Silverlight Animasyon Örneklerine bir katkı da Mike Hilberg’den geldi! Storyboard’un kullanımını anlamak adına yararlı olabileceğine inandığım, güzel bir animasyon örneği:

A Custom Storyboard Component in XAML

DevExpress DXv2 WPF Yenilikleri

DevExpress DXv2 Yeniliklerinin tamamına bu adresten ulaşabilirsiniz:

http://www.devexpress.com/Subscriptions/DXperience/DXv2/

Ben bu yazımda sadece WPF yeniliklerine ayrıntıya girmeden değineceğim:

Tile Layout, daha doğrusu Tile nesnesi

Dokunmatik destekleyen nesneler: Data Grid, TreeList, Chart, Gauge, Pivot Grid, Docking nesneleri, Rich Text

WPF Belge Görüntüleyici

DXGrid için özet alan, MVVM desteği…

TreeList için çoklu seçim ve pano desteği, Hiyerarşi taslağı…

DXChart için yeni grafikler, logaritmik ölçeklendirme, koordinasyon çizelgesi

Gauge nesnesi için yeni modellemeler, özelleştirilebilir derecelendirme, dijital modeller…

WPF Bar için MVVM desteği…

WPF Ribbon için özelleştirme desteği, MVVM desteği, Export & Import desteği…

WPF Scheduling için özelleştirilebilir randevu-hatırlatma penceresi

WPF PivotGrid için XMLA desteği, süzme nesnesi, alan özelleştirme yeniliği…

WPF Dx Docking için MVVM desteği…

WPF Dx Layout nesnesi için layout sihirbazı

WPF için yeni nesneler:  Search LookUp Edit, ComboboxEdit, LookUpEdit ve ListBoxEdit için süzme, sıralama ve gruplama desteği

WPF DevExpress nesneleri için yeni temalar…

Haydi kolay gelsin.

%d blogcu bunu beğendi: