2012-03-15 21 views
9

Sto usando dataTemplate. Questo è il modello:Come ottenere un valore genitore nella multibinding

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

Riesci a vedere questa linea?

<Binding Path="RAM.Size" /> 

Quella linea mi genera un'eccezione, dovrebbe essere perché RAM.Size da un elemento padre. Come posso ottenere quel valore?

Grazie in anticipo!

risposta

31

Quindi stai provando ad arrivare al valore RAM.Size sullo stesso oggetto che il tuo ItemsControl sta ottenendo il suo ItemsSource da?

vedere se questo funziona:

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

Così l'associazione sta salendo attraverso la struttura ad albero visuale al ItemsControl, quindi il legame al Ram.Size proprietà del suo DataContext.

+1

Grazie, questo ha funzionato nel mio progetto! –