在绑定属性类中获取其他属性
本文关键字:属性 获取 其他 绑定 | 更新日期: 2023-09-27 18:09:51
如果我有一个要绑定的嵌套类,我如何检索那个父类呢?例如,我绑定了SecondClass.ImageSource。我现在想在点击Image的时候得到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>