我正在使用MVVM设计模式创建WPF应用程序。
我有一个包含4列的DataGrid,我希望最后一列是图像列。其他3个文本列绑定到列表AttributeNode
中包含的Attributes
的属性,该列表用作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&amp; 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属性附加到它们自己的列。
但是,如果我尝试使用Image Source绑定执行此操作,那么我会收到此错误:
问题
我还不确定我是否可以绑定到表示Image路径的字符串但我更重要的是我如何访问和数据绑定到属性ImageSource
的{{1}}类型的项目{1}}在DataGrid的ItemsSource AttributeNode
(Attributes
列表)中?我的实现适用于其他3列,并根据我的ViewModel中的更改正确更新。我如何像以前一样访问该物业?
答案 0 :(得分:0)
对于任何想知道我是如何解决这个问题的人......
看来这是一个Resharper问题,并且像这样创建一个新的?
Attribute
即使Resharper声称它无法找到new Attribute("","","","../Icons/checkmark.png")
属性,也能正常工作。在运行时正确设置DataContext。图像现在显示在列中。