获取绑定属性类中的其他属性
问题描述:
如果我得到了一个我绑定的嵌套类,那么如何检索该父类。例如,我已经绑定到SecondClass.ImageSource。我现在想要在点击图像时获取SecondClass的信息,我该如何实现?获取绑定属性类中的其他属性
我想更改SecondClass属性,但问题是我有一个相同图像项目的网格。
图像的绑定已经工作。
的XAML:
<Image Source="{Binding Path=SecondClass.ImageSource}" Width="48" Height="48" MouseUp="Image_MouseUp_1" />
代码:
public class FirstClass {
public int number { get; set; }
public SecondClass SecondClass
}
public class SecondClass {
public ImageSource ImageSource { get; set; }
}
private void Image_MouseUp_1(object sender, MouseButtonEventArgs e) {
FirstClass item = ????
}
答
只能绑定到SecondClass.ImageSource
因为Image
的DataContext
是FirstClass
一个实例。所以在处理器中你只需要施放它:
private void Image_MouseUp_1(object sender, MouseButtonEventArgs e) {
FirstClass item = (sender as Image).DataContext as FirstClass;
//<Change item.SecondClass or do whatever you want>
}
答
你的数据对象或者需要知道它的父对象,或者您可以使用一个RelativeSource
或ElementName
结合引用父对象。例如
<Window x:Name="RootWindow" DataContext="{Binding FirstClass}">
<Grid DataContext="{Binding SecondClass.SomeProperty}">
<!-- Binding using ElementName -->
<Button Context="{Binding ElementName=RootWindow,
Path=DataContext.SecondClass}" />
<!-- Binding using RelativeSource -->
<Button Context="{Binding RelativeSource=
{RelativeSource AncestorType={x:Type Window}},
Path=DataContext.SecondClass}" />
</Grid>
</Window>