2013-10-17 54 views
0

我使用Extended WPF Toolkit 2.0.0來設計CheckListBox。我需要爲它設計 複選框項目,但由於某種原因,CheckListBoxItem不存在。或者至少,我的項目無法在任何地方找到參考。這很有趣,原因this tutorial明確使用這些,這似乎工作正常。我想這可能是一個不同的版本,但爲什麼有人會刪除它?擴展WPF工具包中的CheckListBoxItem不存在

以下是我的代碼片段:

<Window x:Class="MyProject.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:xctkToolkit="clr-namespace:Xceed.Wpf.Toolkit;assembly=Xceed.Wpf.Toolkit"> 
    <Grid> 
     <xctkToolkit:CheckListBox Name="m_myCheckBox"> <!-- Works fine --> 
      <xctkToolkit:CheckListBox/> <!-- Doesn't work --> 
     </xctkToolkit:CheckListBox> 
    </Grid> 
</Window> 

而且我加入了依賴Xceed.Wpf.Toolkit到我的項目。我得到的錯誤是:

錯誤MC3074:標記 'CheckListBoxItem' 不存在XML命名空間存在 'CLR的命名空間:Xceed.Wpf.Toolkit;裝配= Xceed.Wpf.Toolkit'

我該如何解決這個問題?

回答

2

只需使用ListBoxItemCheckListBox控件(以及任何ItemsContainer派生的控件)不需要定義其自己的項目類。您可以使用任何ContentControl派生類,但ListBoxItem提供了有用的屬性,如IsSelected。

更好的解決方案是將CheckListBox綁定到您自己的類的集合並設置綁定到您的類的屬性。實際上,這顯示爲in the description of the CheckListBox control itself。不過請注意,你必須綁定SelectedItemsOverride到選定的項目,而不是SelectedItems

例如列表,假設我有我的MainWindow.xaml.cs

public MainWindow() 
{ 
    DataContext = this; 
    MyItems = new List<string> { "a", "b", "c" }; 
    JustSelectedItems = new List<string>(); 
    InitializeComponent();    
} 

下面我可以創建一個CheckBoxList這樣:

<xctk:CheckListBox 
    ItemsSource="{Binding MyItems}" 
    SelectedItemsOverride="{Binding JustSelectedItems}" /> 

並且每次我選擇/不選擇它被添加或從JustSelectedItems移除的項。

通常情況下,你可以使用一個MVVM框架,設置正確的DataContext每個控制,但對於這個簡單的例子,我簡單的告訴了形式結合自身

+0

謝謝,只是'ListBoxItem'工作。不過,我還有一個關於將它綁定到'DataContext'的問題。當你這樣做時,你仍然可以訪問'ListBoxItem's?因爲我試過你的例子,然後'CheckListBox.Items'返回一個字符串數組。我怎麼能現在例如禁用「b」複選框? – Yellow

相關問題