我将列表绑定到我的User
对象ObservableCollection,因此它会自动更新。我使用模板显示用户Name
,但我还想在名称旁边显示图像图标,具体取决于用户对象上IsOp
的值。
我不知道如何在Google搜索中说出这一点,如果有人可以指出我正确的方向。
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:loc="clr-namespace:WpfApplication1"
Title="MainWindow" Height="350" Width="196">
<Window.Resources>
<DataTemplate DataType="{x:Type loc:User}">
<Grid Height="28">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="21" MinWidth="21" MaxWidth="21" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Image Name="imgUserType" Source="/WpfApplication1;component/Images/NormalUser.png" VerticalAlignment="Center" HorizontalAlignment="Center" Width="16" Height="16" Margin="5,0,0,0" />
<Label Name="lblName" Content="{Binding Name}" Grid.Column="1" Padding="7,5,5,5" VerticalContentAlignment="Center" HorizontalAlignment="Left" />
</Grid>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding IsOp}" Value="True">
<Setter TargetName="imgUserType" Property="Source" Value="/WpfApplication1;component/Images/OpUser.png" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</Window.Resources>
<Grid>
<ListBox ItemsSource="{Binding}">
</ListBox>
</Grid>
</Window>
编辑1:
我刚刚遇到一个名为DataTriggers的东西,它会监视某个值,然后相应地塑造模板......这是要走的路吗?
编辑2: 我已经实现了一个基本触发器来更改图标。现在我的新问题是如何组合两个属性。
IsOp (true) + Away (true) = OpAwayIcon
IsOp (true) + Away (false) = OpIcon
IsOp (false) + Away (true) = NormalIconAway
IsOp (false) + Away (false) = NormalIcon
编辑3:
我找到了解决方案:
<DataTemplate.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding IsOp}" Value="True"/>
<Condition Binding="{Binding IsAway}" Value="True"/>
</MultiDataTrigger.Conditions>
<Setter TargetName="imgUserType" Property="Source" Value="/WpfApplication1;component/Images/OpUserAway.png" />
</MultiDataTrigger>
</DataTemplate.Triggers>