需要 我在数据模板中设置它。我想要做的是每个硬件类型显示一个不同的图标,但有一个特殊的例外。我将使用的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>
答案 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中传递它。