使用反射属性数据的XAML绑定



我有一个简单的类,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; }
}

这将几乎完全按照您的描述工作。

创建Binding(在XAML中或在代码中)时,使用字符串定义目标属性,以描述相对于数据上下文的路径。

在下面的例子中,如果你将ClassA的实例分配给ContentControl的Content property,那么绑定的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>

更多关于数据绑定的信息在这里

相关内容

  • 没有找到相关文章

最新更新