在代码中使用控件模板很困难。在 WPF 中,标准且有效的方法是在 XAML 中创建模板布局。然后,如果您需要将任何数据传递给您的控件,您可以使用数据绑定。除了极少数情况外,您通常不需要在代码中构造模板。
要使用 XAML 获得与上述相同的效果,请编写:
<DataGrid x:Name="dataGrid1">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Source="file:///C:\abc.png" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
如果每个网格行的图像路径必须是动态的,您可以像这样修改它:
<DataGrid x:Name="dataGrid1" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Source="{Binding ImageFilePath}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
这是用一些数据填充网格的示例代码:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
List<MyDataObject> list = new List<MyDataObject>();
list.Add(new MyDataObject() { ImageFilePath = new Uri("file:///c:\\abc.png") });
list.Add(new MyDataObject() { ImageFilePath = new Uri("file:///c:\\def.png") });
dataGrid1.ItemsSource = list;
}
}
public class MyDataObject
{
public Uri ImageFilePath { get; set; }
}