如何在multibinding中获取父值

时间:2012-03-15 04:47:33

标签: c# wpf data-binding binding datatemplate

我正在使用dataTemplate。这是模板:

   <ItemsControl ItemsSource="{Binding RAM.Partitions}">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Grid>
                    <TextBlock Text="{Binding Position, StringFormat={}{0}k}"/>
                    <Grid Grid.Column="1">
                        <Border>
                            <Border.Height>
                                <MultiBinding Converter="{StaticResource MultiplyConverter}">
                                    <Binding ElementName="LayoutRoot" Path="ActualHeight"/>
                                    <Binding Path="Size" />
                                    <Binding Path="RAM.Size" />
                                </MultiBinding>
                            </Border.Height>
                        </Border>
                    </Grid>
                </Grid>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>

你能看到这一行吗?

<Binding Path="RAM.Size" />

该行抛出异常,应该是因为RAM.Size来自父元素。我怎么能得到那个价值?

提前致谢!

1 个答案:

答案 0 :(得分:38)

因此,您尝试获取RAM.SizeItemsControl获取ItemsSource的同一对象的<MultiBinding Converter="{StaticResource MultiplyConverter}"> <Binding ElementName="LayoutRoot" Path="ActualHeight"/> <Binding Path="Size" /> <Binding Path="DataContext.RAM.Size" RelativeSource="{RelativeSource Mode=FindAncestor,AncestorType=ItemsControl}" /> </MultiBinding> 值?

看看是否有效:

Ram.Size

因此,绑定通过可视化树进入ItemsControl,然后绑定到其DataContext的{{1}}属性。