2014-12-13 30 views
0

即時通訊使用WPF製作小型桌面應用程序。通過輸出ListView中的方法來綁定WPF中的複選框

我有一個視圖,其中包含項目的listview,每個元素綁定罰款的itemssource屬性和一個{綁定名稱}爲例。

但是每個listview項目都必須有一個複選框。複選框是否被選中取決於項目是否存在於不同的列表中,這意味着我無法通過model/datacontext綁定它。是否有可能從代碼隱藏文件中綁定方法輸出的isChecked屬性?或者我該怎麼做?

+0

可能還沒有足夠清楚我想做什麼。所以只是想解釋更多...我使用的數據模板列表視圖,itemsource工作正常。然而,視圖模型包含一個單獨的列表,當指示是否應該檢查一個複選框時使用,我有興趣從當前項目在列表視圖中獲取一個值,然後檢查它是否存在於另一個列表中,如果是的,那麼應該檢查這個盒子。 – TheTango 2014-12-13 13:43:19

回答

0

你說你有一個listview,它的itemssource屬性綁定到viewmodel的集合。 如果是這樣,你應該用bool屬性擴展那個集合中的實例。該屬性應確定實例是否在您提到的其他列表中,並且該屬性可以綁定到複選框isChecked屬性。

或者你可以在代碼隱藏文件中做一些討厭的事情(迭代通過listview的項目,並檢查項目是否在另一個列表中,並查找項目的複選框,並相應地檢查它),但我強烈建議不要要做到這一點。

0

如果我正確理解你正在嘗試做什麼,你可以在isChecked綁定上使用ValueConverter。 在該方法上,您可以對其他列表中存在的參數進行比較或測試。 需要打破該

的IValueConverter使用和教程MVVM模式: Value conversion with IValueConverter

+0

嗨,如果問題不清楚,可以 - 我可以將ValueConverter放在視圖模型中,還是必須是單獨的類? – TheTango 2014-12-13 13:36:24

+0

查看上面的編輯 – 2014-12-13 14:35:54

0

你的問題不是很清楚,但如果我理解正確的,你可以嘗試使用checkedListBox。它可以包含一個複選框列表,你可以遍歷它:

for (int i = 0; i < checkedListBox1.Items.Count; i++) { 

    if(....) { 
    //here you can write your if statement or call a method whose return type is bool 
    checkedListBox1.SetItemChecked(i, true); 
    } 

}