获取绑定财产类别的其他财产

时间:2011-09-28 12:55:21

标签: c# wpf xaml data-binding

如果我有一个我绑定的嵌套类,我怎么能检索那个父类。例如,我已绑定到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 = ????        
}

2 个答案:

答案 0 :(得分:1)

您只能绑定到SecondClass.ImageSource,因为DataContext的{​​{1}}是Image的实例。所以在处理程序中你只需要转换它:

FirstClass

答案 1 :(得分:0)

您的数据对象需要知道它的父对象,或者您可以使用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>