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 コントロール 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' プロパティに 'Binding' を設定できません。「バインディング」は、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 に答える