Как получить родительское значение в мультибиндинге - PullRequest
11 голосов
/ 15 марта 2012

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

38 голосов
/ 15 марта 2012

Итак, вы пытаетесь получить значение 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.

...