2011-06-17 52 views
1

我有一個列表框,其中的項目是複選框。當列表框滾動時,我發現Checked和Unchecked事件正在觸發項目,因爲它們要麼滾動到視圖中,要麼滾動出視圖。Silverlight ListBox在滾動時觸發CheckBox事件

這似乎與什麼這個帖子討論:

Silverlight 3 Checkbox Listbox bug when scrolling?

我的問題是事件射擊,因爲我更新服務器上的數據時發生這種情況。因此,當我只希望在用戶更改複選框的狀態時發生所有這些虛假服務器通信。

有什麼方法可以在滾動時停止此事件觸發嗎?

回答

2

所以我得到所有這些虛假的服務器通信,當我只希望它發生時,用戶更改複選框的狀態。

我不認爲CheckedUnchecked事件適合您要放置的目的。他們真的被設計成影響視覺狀態。相反,您應該將所列項目對象的布爾屬性綁定到複選框的IsChecked屬性。 item對象中的setter中的代碼然後可以啓動服務器的東西(對於皮帶和大括號,它可以將當前值與傳入值進行比較)。

要回答您的問題,您可以嘗試在列表框的ItemsPanel屬性的模板中指定普通舊StackPanel。儘管如果你有很多條目,這可能不是一個選項。

1

ListBox的默認ItemsPanel是VirtualizingStackPanel。你可以改變它來使用StackPanel,這樣你的問題就解決了。 使用該代碼:

<ListBox.ItemsPanel> 
    <ItemsPanelTemplate> 
    <StackPanel /> 
    </ItemsPanelTemplate> 
<ListBox.ItemsPanel> 
+0

何處使用? – 2013-02-05 11:19:58