根据文本值

时间:2017-05-04 19:15:25

标签: c# xaml windows-10 conditional

需要 我在数据模板中设置它。我想要做的是每个硬件类型显示一个不同的图标,但有一个特殊的例外。我将使用的3个不同的图标是; Shop,OutlineStar和OtherUser。所有寄存器都有商店图标,所有服务器都有OutlineStar,所有显示板都有OtherUser图标。

例外 在某些情况下,寄存器也可以是服务器,因此我希望在这种情况下将Icon切换为Outline Star。

守则

                <DataTemplate x:Key="ZoomedInTemp"
                          x:DataType="DeviceMenu">
                    <Grid>
                        <StackPanel Orientation="Vertical" Padding="5">
                            <TextBlock Text="{x:Bind FacilityName}" />
                            <StackPanel Orientation="Horizontal">
                                <SymbolIcon Symbol="Shop" Margin="0,5,12,0"/>
                                <TextBlock Text="{x:Bind Hardware}" />
                                <TextBlock Text="{x:Bind HostName}" Margin="10,0,0,0"/>
                            </StackPanel>
                        </StackPanel>
                    </Grid>
                </DataTemplate>    

1 个答案:

答案 0 :(得分:0)

您可以使用Converter获取所需的符号,并根据转换器中的硬件设置获取符号的逻辑。

转换器

public class SymbolConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        // value is Hardware
        // Logic to return symbol
        //retun Symbol.OutlineStar
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        throw new NotImplementedException();
    }
}

XAML使用此转换器

<DataTemplate x:Key="ZoomedInTemp"
                      x:DataType="DeviceMenu">
                <Grid>
                    <StackPanel Orientation="Vertical" Padding="5">
                        <TextBlock Text="{x:Bind FacilityName}" />
                        <StackPanel Orientation="Horizontal">
                            <SymbolIcon Symbol="{x:Bind Hardware, Converter={StaticResource SymbolConverter}}" Margin="0,5,12,0"/>
                            <TextBlock Text="{x:Bind Hardware}" />
                            <TextBlock Text="{x:Bind HostName}" Margin="10,0,0,0"/>
                        </StackPanel>
                    </StackPanel>
                </Grid>
            </DataTemplate>    

您必须将此转换器添加到页面/应用程序级资源。 我不确定您需要决定符号,但是,如果您还需要其他内容,那么您可以在ConverterParameter中传递它。