繁体   English   中英

扩展WPF Toolkit中的CheckListBoxItem不存在

[英]CheckListBoxItem in extended WPF Toolkit doesn't exist

我正在使用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中不存在标记'CheckListBoxItem':Xceed.Wpf.Toolkit; assembly = Xceed.Wpf.Toolkit'

我该如何解决这个问题?

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

更好的解决方案是将CheckListBox绑定到您自己的类的集合,并将绑定设置为类的属性。 实际上,这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,但是对于这个简单的示例,我简单地告诉表单绑定到自身

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM