【问题标题】:XamDataGrid - How to create a DataRecordPresenterStyle DataTrigger from C# codeXamDataGrid - 如何从 C# 代码创建 DataRecordPresenterStyle DataTrigger
【发布时间】:2017-03-03 11:49:12
【问题描述】:

我正在尝试这样做:

<Style TargetType="{x:Type igDP:DataRecordPresenter}">
    <Style.Triggers>
        <DataTrigger Binding="{Binding DataItem.IsOnChart}" Value="true">
            <Setter Property="Opacity" Value="1"/>
        </DataTrigger>
        <DataTrigger Binding="{Binding DataItem.IsOnChart}" Value="false">
            <Setter Property="Opacity" Value="0.5"/>
        </DataTrigger>
    </Style.Triggers>
</Style>

来自 C#:

Style _DataRecordPresenterStyle = new Style(typeof(DataRecordPresenter));
_DataRecordPresenterStyle.Setters.Add(new Setter(DataRecordPresenter.OpacityProperty, 1));

var _DataTrigger = new DataTrigger() { Binding = new Binding("DataItem.IsOnChart"), Value = true };
_DataTrigger.Setters.Add(new Setter(DataRecordPresenter.OpacityProperty, 1));
_DataRecordPresenterStyle.Triggers.Add(_DataTrigger);

_DataTrigger = new DataTrigger() { Binding = new Binding("DataItem.IsOnChart"), Value = false };
_DataTrigger.Setters.Add(new Setter(DataRecordPresenter.OpacityProperty, 0.5));
_DataRecordPresenterStyle.Triggers.Add(_DataTrigger);

_Grid.FieldLayoutSettings.DataRecordPresenterStyle = _DataRecordPresenterStyle;

但是当我将数据绑定到网格时,我得到了错误:

默认未处理异常:调用目标已抛出异常。

数据确实有字段,它的类型是布尔值,所有记录的值为真。

我在这里做错了什么?

感谢您的宝贵时间。

【问题讨论】:

    标签: c# wpf datatrigger xamdatagrid


    【解决方案1】:

    “调用的目标已抛出异常”并没有多说。您应该查看InnerException 的消息。我还假设您已经验证了 Style 如果您在 XAML 标记中使用它本身可以正常工作。

    以编程方式创建Style 的推荐方法是使用XamlReader 类并解析XAML。试试这个:

    string xaml = "<Style xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" " +
        "xmlns:igDP=\"clr-namespace:Infragistics.Windows.DataPresenter;assembly=InfragisticsWPF4.DataPresenter.v12.1\" " +
        "TargetType=\"{x:Type igDP:DataRecordPresenter}\">" +
    "<Style.Triggers>" +
            "<DataTrigger Binding=\"{Binding DataItem.IsOnChart}\" Value=\"true\">" +
                "<Setter Property=\"Opacity\" Value=\"1\"/>" +
            "</DataTrigger>" +
            "<DataTrigger Binding=\"{Binding DataItem.IsOnChart}\" Value=\"false\">" +
                "<Setter Property=\"Opacity\" Value=\"0.5\"/>" +
            "</DataTrigger>" +
        "</Style.Triggers>" +
    "</Style>";
    
    Style style = System.Windows.Markup.XamlReader.Parse(xaml) as Style;
    style.Seal();
    

    您可能需要将“InfragisticsWPF4.DataPresenter.v12.1”更改为定义DataRecordPresenter 类的程序集的实际名称。

    【讨论】:

    • 感谢小伙伴的回复,我会试试看的。
    • 工作就像一个魅力,感谢您抽出时间回答 ;-)
    猜你喜欢
    • 1970-01-01
    • 2015-09-16
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-12
    相关资源
    最近更新 更多