Diskuze: Binding do dvou listBoxů
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 9 zpráv z 9.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Přesně potřebuji to aby se mi detail události zobrazil i když kliknu na
událost v listBoxu "Zítra".
Funguje mi jenom ten první listbox.
potřebuji nějak upravit toto:
<StackPanel Orientation="Vertical" DataContext="{Binding ElementName=listDnes,Path=SelectedItem}">
nějak přidat element pro listZitra asi nějak tak:
DataContext="{Binding ElementName=listDnes,Path=SelectedItem} DataContext="{Binding ElementName=listZitra,Path=SelectedItem} ">
Jenže to nefunguje dát je takhle vedle sebe.
Takže abych tomu porozuměl:
Je to tak? Pokud ano, pak si můžeš udělat vlastní DependencyProperty AnySelectedItem a uděláš event handler na SelectionChanged přibližně takhle:
public void List_SelectionChanged(DependencyObject d, EventArgs e)
{
ListBox list = (ListBox)d;
this.AnySelectedItem = list.SelectedItem;
}
Detail si pak binduj na svoji property AnySelectedItem.
Ale musím tě varovat, že tohle je špatně navržený interface a jde to přímo proti HIGu. Jestliže máš více ovládacích prvků, které mezí sebou sdílí "selection" a focus, bude se to chovat nelogicky a mást uživatele. Určitě budeš muset upravit defaultní chování ListBoxů, aby se to chovalo alespoň trochu rozumně.
přesně tak (sorry nevím jak se cituje)
zkusím zatím díky
Ano, existuje ekvivalent Bindingu pro více hodnot - MultiBinding. Jenže ten použít nemůžeš, protože jsi závislý na focused elementu.
Příklad, kdy ti to nebude fungovat a proč je to proti HIG:
Zobrazeno 9 zpráv z 9.