2017-03-03 9 views
0

: C#을에서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> 

을 : 나는 그리드에 데이터를 바인딩 할 때

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; 

하지만 얻을 오류 :

기본 처리되지 않은 예외 : 예외가 호출 대상에 의해 처리되었습니다.

데이터에는 필드가 있으며 유형은 부울이며 모든 레코드에서 값은 true입니다.

내가 뭘 잘못하고 있니?

감사합니다.

답변

1

"호출 대상에 의해 예외가 발생했습니다." InnerException의 메시지를 확인해야합니다. 또한 XAML 마크 업에서 사용하는 경우 Style 자체가 작동하는지 확인했다고 가정합니다.

프로그래밍 방식으로 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(); 

당신은 DataRecordPresenter 클래스가 정의 된 어셈블리의 실제 이름에 "InfragisticsWPF4.DataPresenter.v12.1"을 변경해야 할 수도 있습니다.

+0

답장을 보내 주셔서 감사합니다. – user2109254

+0

는 매력처럼 일했습니다. 답변을 주셔서 감사합니다. ;-) – user2109254