2017-05-04 67 views
0

需要 我在數據模板中設置此項。我想要做的是在每個硬件類型中顯示一個不同的圖標,但有一個特殊例外。我將使用的3個不同的圖標是;商店,OutlineStar和其他用戶。所有註冊將具有商店圖標,所有服務器將具有OutlineStar,並且所有顯示板將具有OtherUser圖標。根據文本值更改SymbolIcon

例外 在某些情況下寄存器也可以是服務器,所以我會想切換圖標在這種情況下,大綱明星。

守則

   <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

您可以使用轉換器來獲得所需的符號,並將獲得基於硬件轉換符號的邏輯。

轉換

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。