我有一个简单的类,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>
更多关于数据绑定的信息在这里