IteamSource vs. DataContext

Dyskusje na temat języka C# oraz biblioteki .NET
boby3
Nowicjusz
Posty: 2
Dołączył(a): niedziela, 18 marca 2012, 16:01

IteamSource vs. DataContext

Post przez boby3 »

Witam
Czy jako źródła wiązania, dla ListBox, można zamiennie używać IteamSource z DataContext? Jaka jest różnica?

Pozdrawiam
aszusz
Moderator
Moderator
Posty: 3
Dołączył(a): środa, 25 lutego 2015, 22:12

Re: IteamSource vs. DataContext

Post przez aszusz »

Witam :)

Nie można. DataContext i ItemsSource działają osobno. Jeżeli ustawisz właściwość DataContext dla kontrolki ListBox (lub jakiejkolwiek innej kontrolki dziedziczącej po ItemsControl) na jakąś kolekcję, to ta kolekcja nie zostanie automatycznie ustawiona w ItemsSource i nie będzie powiązana z kontrolką. Co więcej, jeśli ustawisz DataContext na kolekcję do której chcesz mieć wiązanie z poziomu xaml'a to odetniesz sobie drogę do ustawienia tej samej kolekcji w ItemsSource. W DataContext chcesz mieć obiekt, który zawiera kolekcję, a w ItemsSource właściwą kolekcję.

Działa to analogicznie jak właściwość Text kontrolki TextBlock. Jeśli ustawisz łańcuch znaków w DataContext to nie zobaczysz go na ekranie, musisz ustawić go w Text.

Oprócz DataContext i ItemsSource dla kontrolek dziedziczących po ItemsControl istnieje jeszcze trzecia właściwośc: Items. Jej działanie jest podobne do działania ItemsSource ale w przeciwieństwie do ItemsSource nie odświeża wiązania kiedy kolekcja źródłowa ulega zmianie. W związku z tym mało kiedy się jej używa. Jeśli potrzebujesz dodatkowych informacji na jej temat mogę napisać kolejnego posta.

Pozdrawiam
Post Reply