0

我创建了一个自己的 ComboBoxItem。这里我简化了代码。ComboBoxItem 包含一个 CheckBox。

ComboBoxItem 控件 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" />

当我运行我的应用程序时,我收到此错误:

发生致命错误:无法在“MyCombobox”类型的“IsCheckboxChecked”属性上设置“绑定”。只能在 DependencyObject 的 Dependency 属性上设置“绑定”

我做错了什么?

4

2 回答 2

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

我建议这个:http: //msdn.microsoft.com/en-gb/library/ms752347.aspx

于 2012-07-18T14:42:25.913 回答
0

您必须使您的财产“可绑定”。

看看这个: http: //www.wpftutorial.net/dependencyproperties.html

于 2012-07-18T14:40:54.413 回答