XamDataGrid - 如何从C#代码创建一个DataRecordPresenterStyle DataTrigger
问题描述:
我试图做到这一点:XamDataGrid - 如何从C#代码创建一个DataRecordPresenterStyle DataTrigger
<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;
但是,当我将数据绑定到网格我得到的错误:
默认未处理的异常:异常已通过调用的目标引发异常。
的数据确实有该领域,它的类型是布尔和值的所有记录真实。
我在这里做错了什么?
谢谢你的时间。
答
“调用的目标引发异常”并没有多少说明。您应该检查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
类定义组件的实际名称。
感谢您的答复队友,我会放弃这一切。 – user2109254
工作的魅力,感谢您花时间回答;-) – user2109254