Witaj na Zine.net online Zaloguj się | Rejestracja | Pomoc

WPF to Go: DependencyProperty

Druga część serii o WPF trochę się opóźniła. Z Agnieszką reanimowaliśmy naszego bloga.

Tym razem druga część cyklu w postaci screencasta - z tego właśnie powodu umieściłem go na naszym prywatnym blogu, aby nie "zabić" zine'a, który jakby nie patrzeć stoi koleżeńsko na darmowym hostingu.

Temat screencasta: DependencyProperty. Czekam na komentarze i wybaczcie mój brak profesjonalizmu w tego typu prezentacjach :)

Screencast do obejrzenia tutaj: [http://2-many.net/post/2008/02/Poczatki-z-WPF-czesc-2-DependencyProperty.aspx]

Załączniki: [FontSizeSample] | [SecurityFields]

Opublikowane 17 lutego 2008 19:24 przez yoshi
Filed under:

Powiadamianie o komentarzach

Jeżeli chciałbyś otrzymywać email gdy ta wypowiedź zostanie zaktualizowana, to zarejestruj się tutaj

Subskrybuj komentarze za pomocą RSS

Komentarze:

# re: Początki z WPF część 2: DependencyProperty

17 lutego 2008 22:04 by Wojciech Gebczyk

Dobra rzecz, przystepnie omowiona (wlasnie takich elementow brakuje w SL :P)

# re: Początki z WPF część 2: DependencyProperty

17 lutego 2008 23:02 by Wojciech Gebczyk

Mozna podejsc inaczej jeszcze - Attached Property:

---[C#]---

using System.Windows;

using System.Windows.Controls;

using System.Windows.Media;

namespace WpfApplication1 {

   public class MyTextBox : TextBox {

       public static readonly DependencyProperty IsRedProperty;

       static MyTextBox() {

           var isRedMetadata = new FrameworkPropertyMetadata {

                AffectsRender = true,

                Inherits = true,

                PropertyChangedCallback = OnIsRedChanged

           };

           IsRedProperty = DependencyProperty.RegisterAttached("IsRed", typeof(bool), typeof(MyTextBox), isRedMetadata);

       }

       public bool IsRed { get { return (bool)GetValue(IsRedProperty); } set { SetValue(IsRedProperty, value); } }

       private static void OnIsRedChanged(DependencyObject o, DependencyPropertyChangedEventArgs e) {

           var txt = o as MyTextBox;

           if (txt == null) { return; }

           var isRed = (bool)e.NewValue;

           if (isRed) {

               txt.Background = new SolidColorBrush(Colors.Red);

           } else {

               txt.Background = (Brush)BackgroundProperty.DefaultMetadata.DefaultValue;

           }

       }

       public static void SetIsRed(UIElement element, bool value) { element.SetValue(IsRedProperty, value); }

       public static bool GetIsRed(UIElement element) { return (bool)element.GetValue(IsRedProperty); }

   }

}

---[XAML]---

<Window x:Class="WpfApplication1.Window1"

   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

   xmlns:me="clr-namespace:WpfApplication1"

   Title="Window1" Height="300" Width="300">

   <StackPanel me:MyTextBox.IsRed="True">

     <me:MyTextBox />

     <me:MyTextBox IsRed="True"/>

     <me:MyTextBox IsRed="False" />

   </StackPanel>

</Window>

# re: Początki z WPF część 2: DependencyProperty

18 lutego 2008 11:00 by yoshi

Zapomniałem z tego zalatania wrzucić kod źródłowy przykładów - ale już się poprawiłem.

AttachedProperty to tak naprawdę też DependencyProperty tylko inaczej rejestrowane. O ile mnie pamięć nie myli to Metoda Grid.SetRow / SetColumn opiera się właśnie na AttachedProperty.

Ciężko mi było wymyślić ciekawy przykład do DP - wszystko co oczywiste jak IsEnabled, IsVisible, FontSize, FontFamily itd było już zaimplementowane. Ktoś ma pomysł co można jeszcze z DP ciekawego zrobić?

Czekam ciągle na komentarze czy mnie w ogóle da się słuchać - w końcu jeden Wojtek "wiosny" nie czyni ;) (ale cieszę się że ktoś to obejrzał ;))

# re: Początki z WPF część 2: DependencyProperty

18 lutego 2008 11:35 by Wojciech Gebczyk

Ale przyklad jak najbardziej OK! krotki zwarty i esencyjny.

Attached properties to na przyklad widze umozliwienie dodanie CSS-like funkcjonalnosci do aplikacji. Hmm.. nawet mi cos chodzi po glowie... Szkoda ze SL nie wspiera tego...

# re: Początki z WPF część 2: DependencyProperty

21 lutego 2008 16:14 by nuwanda

W końcu znalazłem chwilkę żeby oglądnąć. Podobało mi się, szczególnie, że w obecnej chwili sam nie mogę podłubać w WPF, a chciałbym. Dobra robota! Mam nadzieję, że na tym się nie skończy :)

Co o tym myślisz?

(wymagane) 
wymagane 
(wymagane) 

  
Wprowadź kod: (wymagane)