我正在尝试使用在C#中生成的几列填充一个数据网格。其中一列是PackIcon或PackIconMaterial,另一列是带有多个文本列的复选框。图像将根据数据集合中的int值而变化。
<DataGrid Name="DataGrid1"/>
</DataGrid>
Code to populate the grid:
ObservableCollection<DemoModel> models = new ObservableCollection<DemoModel>();
models.Add(new DemoModel() { Text = "Some Text #1.", DynamicImg = PackIconKind.Bell });
models.Add(new DemoModel() { Text = "Some Text #2." });
models.Add(new DemoModel() { Text = "Some Text #3." });
models.Add(new DemoModel() { Text = "Some Text #4.", DynamicImg = PackIconKind.BellOutline});
models.Add(new DemoModel() { Text = "Some Text #5." });
DataGrid1.ItemsSource = models;
The model:
class DemoModel : INotifyPropertyChanged
{
protected String _text;
public String Text
{
get { return _text; }
set { _text = value; RaisePropertyChanged("Text"); }
}
protected String _dynamicText;
public String DynamicText
{
get { return _dynamicText; }
set { _dynamicText = value; RaisePropertyChanged("DynamicText"); }
}
internal bool MyIsReadOnly = true;
protected PackIconKind _DynamicImg;
public PackIconKind DynamicImg
{
get { return _DynamicImg; }
set {
_DynamicImg = value;
RaisePropertyChanged("DynamicImg");
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void RaisePropertyChanged(String propertyName)
{
PropertyChangedEventHandler temp = PropertyChanged;
if (temp != null)
{
temp(this, new PropertyChangedEventArgs(propertyName));
}
}
}
我得到的所有这些代码都是文本“ Bell”或“ BellOutline”。我也尝试过“ public PackIcon DynamicImg”,但似乎只显示类名而不是单元格中的图像。
有人有完整的例子吗?我看过一些示例,但还没有真正完成对mahapps图标的使用。
使用.Net 4.6和Material Design主题2.3.1.953。
谢谢,史蒂夫
我认为将DataGrid的AutoGenereateColumnts属性设置为false并在XAML中定义它们是可行的。如果将一列的模板定义为PackIcon,则可以将PackIcon类型绑定到它。
干杯,米哈尔。