Как да получите родителска стойност при мултибиндинг

Използвам 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 е от родителски елемент. Как мога да получа тази стойност?

Благодаря предварително!


person Darf Zon    schedule 15.03.2012    source източник


Отговори (1)


Значи се опитвате да стигнете до стойността RAM.Size на същия обект, от който вашият ItemsControl получава своето 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>

Така че свързването преминава през визуалното дърво към ItemsControl, след което се свързва към свойството Ram.Size на неговия DataContext.

person Matt Hamilton    schedule 15.03.2012