2010-10-04 99 views
0
<UserControl.Resources> 

<DataTemplate x:Key="MyCustomTemplate"> 
      <StackPanel Orientation="Horizontal"> 
       <Label Content="{Binding Path=ID}"/> 
       <Rectangle Height="18" Width="20" /> 
      </StackPanel> 
     </DataTemplate> 
    </UserControl.Resources> 

<Grid> 
<ListBox x:Name="userListBox" Margin="10"/> 
</Grid> 

代碼後面:綁定矩形填充到一個值

userListbox.ItemsSource = myservice.getvalue();

現在我該如何綁定矩形的顏色。 getValue返回一個成員爲整數的對象列表,我必須使用該值來決定矩形的顏色。 說,如果object.item = 1種顏色=綠色 object.item = 2顏色=紅色

+0

你想交替行的顏色,或者你只是想col0r基於屬性值的矩形? – 2010-10-04 06:15:29

回答

2

可以使用數據觸發器來實現這一點,例如:

<DataTemplate x:Key="MyCustomTemplate"> 
    <StackPanel Orientation="Horizontal"> 
     <Label Content="{Binding Path=ID}"/> 
     <Rectangle x:Name="rect" Height="18" Width="20" /> 
    </StackPanel> 
    <DataTemplate.Triggers> 
     <DataTrigger Binding="{Binding Path=object.item}" Value="1"> 
      <Setter TargetName="rect" Property="Fill" Value="Green"/> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding Path=object.item}" Value="2"> 
      <Setter TargetName="rect" Property="Fill" Value="Red"/> 
     </DataTrigger> 
    </DataTemplate.Triggers> 
</DataTemplate> 

,然後結合爲模板化的值控制列表框

<Label ContentTemplate="{DynamicResource MyCustomTemplate}" Grid.Column="2" Content="{Binding ElementName=userListBox, Path=SelectedItem}"/> 

,或者如果DataTemplate中實際上是列表框,那麼你可以做這樣的選擇的項目:

<ListBox x:Name="userListBox" Margin="10" ItemTemplate="{DynamicResource MyCustomTemplate}" />