2012-03-15 6 views
9

Estoy usando dataTemplate. Esta es la plantilla:Cómo obtener un valor primario en 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> 

¿Puedes ver esta línea?

<Binding Path="RAM.Size" /> 

Esa línea me lanza una excepción, debe ser porque es RAM.Size de un elemento padre. ¿Cómo puedo obtener ese valor?

¡Gracias de antemano!

Respuesta

31

¿Está tratando de obtener el valor RAM.Size en el mismo objeto que su ItemsControl está obteniendo su ItemsSource?

ver si esto funciona:

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

Así que la unión está subiendo a través del árbol visual a ItemsControl, a continuación, se une a la propiedad Ram.Size de su DataContext.

+1

¡Gracias, esto ha funcionado en mi proyecto! –

Cuestiones relacionadas