0

私は単純なクラス ClassA (以下) を持っています。XAML リピーターで、反映されたプロパティ名をテキスト ボックスにバインドし、チェックボックス IsChecked を bool プロパティにバインドできる可能性はありますか? したがって、私の XAML は次のようになります (これは単なる疑似 xaml であり、構文的に正しいかどうかは不明であり、ItemsControl データ コンテキストが ClassA であると仮定します):

<ItemsControl>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <TextBox Text="{Binding ??? reflected property name as text, e.g., ClassABool1 ??? }"
            <CheckBox IsChecked="{Binding ??? somehow bind to the actual property ClassABool1 ???, Mode=TwoWay}"
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>


public sealed class ClassA : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler  PropertyChanged;
    private static ClassA _instance;
    private ClassA() {}

    public static ClassA Instance
    {
        get
        {
            if (_instance == null)
            {
                _instance = new ClassA();
            }

            return _instance;
        }
    }

    private bool _classABool1;
    public bool ClassABool1 { get; set; }

    private bool _classABool2;
    public bool ClassABool2 { get; set; }
}
4

1 に答える 1

0

これは、説明したとおりにほぼ正確に機能します。

Binding を (XAML またはコードで) 作成するときは、文字列を使用してターゲット プロパティを定義し、データ コンテキストに対する相対パスを記述します。

Content property次の例では、ClassA のインスタンスをContentControl の に割り当てると、 Binding のData Contextがそのインスタンスになります。

<ContentControl Content="An Instance of ClassA">
    <ContentControl.ContentTemplate>
        <DataTemplate>
            <StackPanel>
                <TextBox Text="{Binding ClassABool1}" />

                <CheckBox IsChecked="{Binding ClassABool1, Mode=TwoWay}" />
            </StackPanel>
        </DataTemplate>
    </ContentControl.ContentTemplate>
</ContentControl>

データバインディングの詳細はこちら

于 2013-03-06T22:07:13.580 に答える