オブジェクト ObservableCollection にリストをバインドしているUser
ので、自動的に更新されます。ユーザーを表示するためにテンプレートを使用していますが、 User オブジェクト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: アイコンを変更するための基本的なトリガーを実装しました。今、私の新しい問題は、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>