我创建了一个自己的ComboBoxItem。在这里,我简化了代码。 ComboBoxItem包含一个CheckBox。
ComboBoxItem Control xaml:
<ComboBoxItem x:Class="WpfApplication1.MyCombobox"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="50"
Width="200">
<!-- ... -->
<StackPanel>
<CheckBox IsChecked="{Binding Path=IsCheckboxChecked}" IsEnabled="{Binding Path=IsCheckboxEnabled}">
<CheckBox.LayoutTransform>
<ScaleTransform ScaleX="1" ScaleY="1" />
</CheckBox.LayoutTransform>
</CheckBox>
<!-- ... -->
</StackPanel>
</ComboBoxItem>
ComboBoxItem Control c#(代码隐藏)
public partial class MyCombobox
{
public MyCombobox()
{
InitializeComponent();
DataContext = this;
//Defaults
IsCheckboxChecked = false;
IsCheckboxEnabled = true;
//...
}
//...
public string Text { get; set; }
public bool IsCheckboxChecked { get; set; }
public bool IsCheckboxEnabled { get; set; }
//...
}
我把它包括在内:
<WpfApplication1:MyCombobox IsCheckboxChecked="{Binding Path=IsMyCheckBoxChecked, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" IsCheckboxEnabled="{Binding Path=IsMyCheckBoxEnabled, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" Text="Write your Text here" />
当我运行我的应用程序时,我收到此错误:
发生致命错误:无法设置'绑定' “IsCheckboxChecked”属性类型为“MyCombobox”。 '绑定'可以 只能在DependencyObject的依赖属性上设置
我做错了什么?
答案 0 :(得分:2)
错误很明显:您必须为 IsCheckboxChecked 字段创建一个DP:
public static readonly DependencyProperty IsCheckboxCheckedProperty = DependencyProperty.Register("IsCheckboxChecked", typeof(bool), typeof(MyComboBox));
public bool IsCheckboxChecked
{
get { return (bool)GetValue(IsCheckboxCheckedProperty); }
set { SetValue(IsCheckboxCheckedProperty, value); }
}
而不是:
public bool IsCheckboxChecked { get; set; }
但这也意味着你必须让你的MycomboBox类继承DependencyObject类:
public partial class MyCombobox : DependencyObject
答案 1 :(得分:0)
你必须让你的财产'可绑定'。