2017-03-03 3 views
0

ich, dies zu tun versuche:XamDataGrid - Wie ein DataRecordPresenterStyle Datatrigger von C# -Code erstellen

<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> 

Von 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; 

Aber wenn ich die Daten an das Gitter binden bekomme ich die Fehler:

Standard Nicht behandelte Ausnahme: Ausnahme wurde durch das Ziel eines Aufrufs ausgelöst.

Die Daten haben das Feld, es ist ein Bool und der Wert ist auf allen Datensätzen wahr.

Was mache ich hier falsch?

Danke für Ihre Zeit.

Antwort

1

"Ausnahme wurde durch das Ziel einer Invokation ausgelöst" sagt nicht viel. Sie sollten die Nachricht der InnerException überprüfen. Ich nehme auch an, dass Sie überprüft haben, dass das Style selbst funktioniert, wenn Sie es in Ihrem XAML-Markup verwenden.

Die empfohlene Methode zum Erstellen eines Style Programms ist die Verwendung der Klasse XamlReader und die Syntaxanalyse von XAML. Versuchen Sie folgendes:

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(); 

Sie müssen möglicherweise „InfragisticsWPF4.DataPresenter.v12.1“ ändern, um den tatsächlichen Namen der Versammlung, in der die DataRecordPresenter Klasse definiert ist.

+0

danke für die Antwort Kumpel, werde ich es versuchen. – user2109254

+0

funktionierte wie ein Zauber, danke, dass du dir die Zeit genommen hast zu antworten ;-) – user2109254

Verwandte Themen