0

オブジェクト 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>
4

0 に答える 0