2015-08-19 84 views
0

我使用MVVM設計模式創建WPF應用程序。WPF如何將圖像綁定到DataGrid列作爲ItemsSource的屬性?

我有一個DataGrid 4列,我想最後一列是一個圖像列。其他3個文本列綁定到列表Attributes中包含的AttributeNode的屬性,該列表用作ItemsSource

XAML

<UserControl.DataContext> 
    <viewModel:AttributeGridViewModel /> 
</UserControl.DataContext>  

... 

<DataGrid Name="AttributeGrid" HorizontalAlignment="Stretch" 
       VerticalAlignment="Stretch" ItemsSource="{Binding Attributes}" 
       AutoGenerateColumns="False"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Parameter" Binding="{Binding Parameter}" 
          MinWidth="30" Width="225" FontSize="15"/> 
     <DataGridTextColumn Header="Value" Binding="{Binding Value}" 
          MinWidth="30" Width="*" FontSize="15"/> 
     <DataGridTextColumn Header="IP Address" Binding="{Binding IpAddress}" 
          MinWidth="10" Width="120" FontSize="15"/> 
     <DataGridTemplateColumn Header="Conflict" Width="50"> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <!-- area of confusion --> 
        <Image Source="{Binding ???}" /> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
    </DataGrid.Columns> 
</DataGrid> 

AttributeGridViewModel & AttributeNode

在我AttributeGridViewModel我設置使用這樣一行屬性:

Attributes = ConfigUtility.GetAttributeNodes(value); 

下面是AttributeNode類的一部分:

public class AttributeNode 
{ 
    public string Parameter { get; set; } 
    public string Value { get; set; } 
    public string IpAddress { get; set; } 
    public string ImageSource {get; set; } 
    public char Type { get; set; } 

    ... 
} 

您可以在此查看屬性以及如何將Parameter,Value和IpAddress屬性附加到其自己的列。

但是,如果我嘗試用那麼圖像源結合,爲此,我得到這個錯誤:

enter image description here

問題

我還不確定我是否可以綁定到一個代表圖像路徑的字符串,但我想更重要的是如何訪問數據綁定到屬性ImageSource對於DataGrid的ItemsSource Attributes(列表Attributes)中的AttributeNode類型的項目?我的實現適用於其他3列,並根據ViewModel中的更改正確更新。我如何訪問像我以前那樣的財產?

+0

只是猜測:如果您將DataTemplate定義爲靜態資源,它會有所幫助,如DataGridTemplateColumn的MSDN示例中所示? https://msdn.microsoft.com/en-us/library/system.windows.controls.datagridtemplatecolumn(v=vs.110).aspx –

+0

@DaveMackersie我得到了我以前得到的同樣的錯誤。 – CBrown77

回答

0

對於任何人想知道如何解決這個問題?

看來這是一個ReSharper的問題,並創建一個新的Attribute這樣

new Attribute("","","","../Icons/checkmark.png") 

工作,即使ReSharper的聲稱無法找到ImageSource屬性。 DataContext在運行時正確設置。圖像現在顯示在列中。

相關問題