扩展的 WPF 工具包中的 CheckListBoxItem 不存在
本文关键字:CheckListBoxItem 不存在 工具包 WPF 扩展 | 更新日期: 2023-09-27 18:35:41
我正在使用扩展的WPF工具包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:标记"CheckListBoxItem"在 XML 命名空间"clr-namespace:Xceed.Wpf.Toolkit;assembly=Xceed.Wpf.Toolkit"中不存在
我该如何解决这个问题?
只需使用 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}" />
每次我选中/取消选中一个项目时,它都会从 JustSelectedItem 中添加或删除。
通常,您将使用一个 MVVM 框架来为每个控件设置正确的 DataContext,但对于这个简单的示例,我只是告诉表单绑定到自身