如果我有一个PropertyPath,是否有可能获得它的属性?如果没有,我需要什么最小的信息?从示例中我需要获得SomeAttribute。我需要它自定义绑定类。
例如
Test.xaml
<TextBox Text={Binding SomeValue}/>
Test.xaml.cs
[SomeAttribute]
public string SomeValue { get; set; }
答案 0 :(得分:0)
通过PropertyPath,您只能使用属性或子属性。 请阅读data binding overview以获取更多信息。
答案 1 :(得分:0)
您可以使用反射技术获取绑定属性的属性。
以下是示例代码。
<强> SomeEntity.cs 强>
public class SomeEntity
{
[SomeAttribute]
public string SomeValue { get; set; }
}
<强> MainWindow.xaml 强>
<Window x:Class="WpfApplication4.MainWindow" ...>
<StackPanel>
<TextBox Name="textBox" Text="{Binding SomeValue}"/>
<Button Click="Button_Click">Button</Button>
</StackPanel>
</Window>
<强> MainWindow.xaml.cs 强>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new SomeEntity();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
// Get bound object from TextBox.DataContext.
object obj = this.textBox.DataContext;
// Get property name from Binding.Path.Path.
Binding binding = BindingOperations.GetBinding(this.textBox, TextBox.TextProperty);
string propertyName = binding.Path.Path;
// Get an attribute of bound property.
PropertyInfo property = obj.GetType().GetProperty(propertyName);
object[] attributes = property.GetCustomAttributes(typeof(SomeAttribute), false);
SomeAttribute attr = (SomeAttribute)attributes[0];
}
}