好的,這必須是一個重複的問題,但我找不到答案: 我有一個列表框,是一個集合的數據綁定。默認情況下,選擇項目[0]。我怎樣才能防止這種情況,以確保在我單擊ListBoxItem時發生SelectionChanged事件?如何確保在數據綁定ListBox中沒有選中項目?
編輯: 我已經駁回的SelectedIndex = -1路線,但我再次嘗試:在列表框的構造函數(或在XAML屬性)不起作用的SelectedIndex設置爲-1。看起來,在初始化之後,列表框被填充並且selectedindex將變爲0。將SelectedItem設置爲null的所謂故事;
我嘗試這樣做:
<ListBox ItemsSource="{Binding Value}"
SelectionChanged="ListBox_SelectionChanged"
IsSynchronizedWithCurrentItem="True"
Loaded="ListBox_Loaded">
</ListBox>
有:
private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if(e.AddedItems.Count==0)return;//Prevents stackoverflow! ;-)
((ListBox)e.OriginalSource).SelectedItem=null;
}
private void ListBox_Loaded(object sender, RoutedEventArgs e)
{
((ListBox) sender).SelectedItem = null;
}
這工作,但它插入在該列表框顯示,這是非常醜陋的項目頂部的空白行... 在我的特殊情況下,我可以通過刪除IsSynchronizedWithCurrentItem屬性來解決問題。
但我可以想到很多情況下,這是不可接受的。
上面的語句是無稽之談:要麼使用master-detail綁定並將IsSynchronizedWithCurrentItem設置爲true,要麼不要。這是不太可能的,你想利用主從細節綁定,然後沒有當前選定的項目在你的列表框
非常好,代碼顯示了一些我不熟悉的方法。謝謝! – Dabblernl 2009-11-29 19:21:18
對不起,關於代碼 - 這只是快速和骯髒的方式來演示解決方案。代碼本身在很多方面都是錯誤的。 – 2009-11-29 23:19:04