我有一个简单的类,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; }
}
答案 0 :(得分:0)
这几乎与您描述的完全一致。
创建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>