<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 color = green object.item = 2 color = red
答案 0 :(得分: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}" />
答案 1 :(得分:2)
使用ValueConverter,信息在这里: http://blogs.msdn.com/b/bencon/archive/2006/05/10/594886.aspx