2015-08-27 62 views
0

我有一個綁定到我的模型上的屬性的問題。在DataGrid中,我顯示錯誤。每個錯誤都有屬性ErrorDescription,它本身的屬性爲Severity綁定到WPF DataGrid中的簡單屬性

我可以綁定到Severity在我下面的DataGrid的TextColumn,但是在TemplateColumn中結合Severity失敗,出現錯誤

「無法解析屬性‘ErrorDescription中’型 MainViewModel的數據上下文」

DataContext我的image-column與我的第一個文本列不一樣。這是爲什麼?

<DataGrid ItemsSource ="{Binding Errors}" AutoGenerateColumns="False"> 
     <DataGrid.Columns> 

      // works 
      <DataGridTextColumn Binding="{Binding ErrorDescription.Severity}"></DataGridTextColumn> 
      <DataGridTemplateColumn> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <Image> 
          <Image.Style> 
           <Style TargetType="Image"> 
            <Style.Triggers> 
             // Binding fails 
             <DataTrigger Binding="{Binding ErrorDescription.Severity}" Value="Unknown"> 
              <Setter Property="Source" Value="/error.jpg"/> 
             </DataTrigger> 
             // Binding fails 
             <DataTrigger Binding="{Binding ErrorDescription.Severity}" Value="Ok"> 
              <Setter Property="Source" Value="/ok.jpg"/> 
             </DataTrigger> 
            </Style.Triggers> 
           </Style> 
          </Image.Style> 
         </Image> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 
     </DataGrid.Columns> 
     </DataGrid> 

回答

1

如何使用Converter而不是DataTrigger? 當我想顯示圖標或具體屬性值取決於一個枚舉我做它與轉換器。

轉換器將與此類似:

public class ErrorSeverityConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     Severity severity = (Severity)value; 
     switch(severity) 
     { 
      case Severity.Unknown: 
       return "/error.jpg"; 

      case Severity.Ok: 
       return "/ok.jpg"; 
     } 
    } 

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

還有這等問題,這是非常相似的,即使不是在DataGridTemplateColumn

Enable TextBox depending on enum value

+0

嚴重性確實是一個枚舉,但是,我可以在TextColumn中顯示它的值,而不需要任何額外的東西,但我無法使用在TemplateColumn中獲取它的值。我會調整我的帖子。 – peter