0

我将一个列表绑定到我的User对象 ObservableCollection,因此它会自动更新。我使用模板来显示用户,但我还想根据User 对象Name上的值在名称旁边显示一个图像图标。IsOp

我不知道如何在谷歌搜索中表达这一点,如果有人能指出我正确的方向,请。

<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>
4

0 回答 0