2017-03-03 55 views
0

我試圖做到這一點: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; 

但是,當我將數據綁定到網格我得到的錯誤:

默認未處理的異常:異常已通過調用的目標引發異常。

的數據確實有該領域,它的類型是布爾和值的所有記錄真實。

我在這裏做錯了什麼?

謝謝你的時間。

回答

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類定義組件的實際名稱。

+0

感謝您的答覆隊友,我會放棄這一切。 – user2109254

+0

工作的魅力,感謝您花時間回答;-) – user2109254