1

我正在使用Extended WPF Toolkit 2.0.0来设计一个CheckListBox. 我需要为它设计复选框项目,但由于某种原因,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:XML 命名空间“clr-namespace:Xceed.Wpf.Toolkit;assembly=Xceed.Wpf.Toolkit”中不存在标记“CheckListBoxItem”

我该如何解决这个问题?

4

1 回答 1

3

只需使用ListBoxItem. CheckListBox控件(以及任何 ItemsContainer 派生控件)不需要定义自己的项类。您可以使用任何 ContentControl 派生类,但ListBoxItem可以提供有用的属性,例如 IsSelected。

一个更好的解决方案是将 绑定CheckListBox到您自己的类的集合并设置绑定到您的类的属性。实际上,这在控件本身的描述中有所CheckListBox体现。请注意,您必须绑定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,但对于这个简单的示例,我简单地告诉表单绑定到自身

于 2013-10-17T11:21:38.660 回答