2012-03-15 41 views
9

Tôi đang sử dụng dataTemplate. Đây là mẫu:Cách nhận giá trị gốc trong 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> 

Bạn có thấy dòng này không?

<Binding Path="RAM.Size" /> 

Dòng đó ném cho tôi một ngoại lệ, nên bởi vì RAM.Size là từ phần tử gốc. Làm thế nào tôi có thể nhận được giá trị đó?

Cảm ơn trước!

Trả lời

31

Vì vậy, bạn đang cố gắng để có được giá trị RAM.Size trên cùng một đối tượng mà ItemsControl của bạn nhận được số ItemsSource từ đó?

Xem nếu công trình này:

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

Vì vậy, các ràng buộc được đi lên trong qua cây thị giác để ItemsControl, sau đó liên kết với các Ram.Size tài sản của DataContext của nó.

+1

Cảm ơn, điều này đã làm việc trong dự án của tôi! –

Các vấn đề liên quan