2013-10-17 48 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

相关问题