Как получить родительское значение в multibinding

Я использую 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