Sta*_*mpy 4 c# wpf xaml combobox xceed
我正在使用Xceed可检查组合框.现在我想显示一个默认文本,具体取决于组合框中选中的复选框,但我不知道该怎么做.
例如:

文本框的内容(红色箭头)应为:
喜欢:

例如,代码:
XAML:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
Title="MainWindow" Height="350" Width="525">
<Grid>
<xctk:CheckComboBox x:Name="_checkComboBox"
Height="22"
VerticalAlignment="Stretch"
ItemsSource="{Binding Names}"
SelectedItemsOverride="{Binding SelectedNames}"
DisplayMemberPath="Title"
Delimiter=", "
Width="100"/>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
CS:
using System.Windows;
namespace WpfApplication1
{
using System.Collections.ObjectModel;
public partial class MainWindow
{
public MainWindow()
{
InitializeComponent();
_checkComboBox.DataContext = this;
Names = new ObservableCollection<People>()
{
new People() { Title = "Mikel" },
new People() { Title = "Tom" },
new People() { Title = "Jennifer" },
new People() { Title = "Megan" },
};
SelectedNames = new ObservableCollection<People>();
}
public ObservableCollection<People> Names
{
get;
set;
}
public ObservableCollection<People> SelectedNames
{
get;
set;
}
}
public class People
{
public string Title
{
get;
set;
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用值转换器.
这样的事情应该有效:
XAML:
SelectedItemsOverride="{Binding SelectedNames,
Converter={StaticResource SelectedNamesConverter}},
ConverterParameter={Binding Names}}"
Run Code Online (Sandbox Code Playgroud)
C#:
public class SelectedNamesConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if ((List<string>)value.length() == 0):
return "Please select";
if (((List<string>)value).length() == ((List<string>)parameter).length())
return "All people";
return "Specific selection";
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
// Log this as a non-fatal error. You shouldn't be here!
return DependencyProperty.UnsetValue;
// Alternatively:
// throw new NotImplementedException();
}
}
Run Code Online (Sandbox Code Playgroud)
并使名称成为依赖属性:
public static DependencyProperty NamesProperty = DependencyProperty.Register(
"Names",
typeof(ObservableCollection<People>),
typeof(MainWindow));
public ObservableCollection<People> Names
{
get { return (ObservableCollection)GetValue(NamesProperty); }
private set { SetValue(NamesProperty, value); }
}
Run Code Online (Sandbox Code Playgroud)
使MainWindow继承自DependencyObject:
public class MainWindow : DependencyObject
Run Code Online (Sandbox Code Playgroud)