带有单元格材质设计PackIcon的WPF Datagrid

问题描述 投票:0回答:1

我正在尝试使用在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。

谢谢,史蒂夫

c# wpf wpfdatagrid mahapps.metro
1个回答
0
投票

我认为将DataGrid的AutoGenereateColumnts属性设置为false并在XAML中定义它们是可行的。如果将一列的模板定义为PackIcon,则可以将PackIcon类型绑定到它。

干杯,米哈尔。

© www.soinside.com 2019 - 2024. All rights reserved.