在绑定属性类中获取其他属性

本文关键字:属性 获取 其他 绑定 | 更新日期: 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,因为ImageDataContextFirstClass的一个实例。所以在处理程序中你只需要强制转换它:

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>
}

您的数据对象需要知道它的父对象,或者您可以使用RelativeSourceElementName绑定来引用父对象。例如

<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>