2012-03-15 18 views
9

私は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> 

この行が表示されますか?ラインは私に例外をスローRAM.Sizeが親要素からなので、それはすべきであると

<Binding Path="RAM.Size" /> 

。その価値をどのように得ることができますか?

ありがとうございます!

答えて

31

ItemsControlItemsSourceと同じオブジェクトの値をRAM.Sizeにしようとしていますか?

これが動作するかどうかを参照してください:

<MultiBinding Converter="{StaticResource MultiplyConverter}"> 
    <Binding ElementName="LayoutRoot" Path="ActualHeight"/> 
    <Binding Path="Size" /> 
    <Binding Path="DataContext.RAM.Size" 
     RelativeSource="{RelativeSource Mode=FindAncestor,AncestorType=ItemsControl}" /> 
</MultiBinding> 

ので、結合は、そのDataContextののRam.Size財産への結合、のItemsControlにビジュアルツリーを通って上がっています。

+1

ありがとうございます、これは私のプロジェクトでうまくいっています! –

関連する問題