2009-07-24 18 views
8

Ich habe ein Silverlight (v2) Datagrid, wo einige Elemente Sektionskopf sind und als solche mit einer anderen Hintergrundfarbe erscheinen müssen.silverlight datagrid - Bindung der Stile jeder Zeile

ich versuche, dies mit dem folgenden XAML zu tun:

 <dg:DataGrid.RowStyle> 
      <Style TargetType="dg:DataGridRow"> 
       <Setter Property="Background" Value="{Binding Path=Background, Mode=OneTime}" /> 
      </Style> 
     </dg:DataGrid.RowStyle> 

ich es erwarten, dass die Background-Eigenschaft des Datagrid Zeile Ansichtsmodell zu jeder Zeile der Background-Eigenschaft zu binden, stattdessen bekomme ich eine schöne Unbekannte XAML-Parsing Fehler:

{System.Windows.Markup.XamlParseException: AG_E_RUNTIME_MANAGED_UNKNOWN_ERROR [Line: 16 Position: 57] 
    at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator) 
    at Etana.Survey.Silverlight.UserInterface.Views.MaximumProbableLossPage.InitializeComponent() 
    at Etana.Survey.Silverlight.UserInterface.Views.MaximumProbableLossPage..ctor()} 

wenn ich versuche, explizit versuchen, „Red“ und nicht zu spezifizieren und den Stil zu binden, dann funktioniert es, so frage ich mich, ob Silverlight mich einen Stil zu binden, wie das erlauben würde, oder wenn es ein anderer Trick ist zu ihm.

(die XAML auf einer wpf Umsetzung dieser basiert, der gut arbeitet)

jede Eingabe wäre sehr geschätzt

+0

eine andere Sache, die es wert sein könnte, zu erwähnen ist, dass die ViewModel.Background Eigenschaft eine Zeichenfolge ist. PS. Ich setze derzeit den Hintergrund jeder Zeile, indem ich das LoadingRow-Ereignis behandle, aber ich fühle mich schmutzig dabei: P –

Antwort

4

Ihre zu Template Bindung ändern. zB

<dg:DataGrid.RowStyle> 
      <Style TargetType="dg:DataGridRow"> 
       <Setter Property="Background" Value="{TemplateBinding Background, Mode=OneTime}" /> 
      </Style> 
</dg:DataGrid.RowStyle> 
+0

Es gab mir folgenden Fehler: Fehler 'Hintergrund' wurde nicht im Typ 'DataGridRow' gefunden –

3

Silverlight ab Versionsnummer 4 unterstützt keine Bindungen in einem Setter-Wert. Es gibt eine Problemumgehung als angehängte Eigenschaft implementiert:

SetterValueBindingHelper

+0

danke dafür, sicher wird es Praktisch für Leute, die nach einer Lösung in V4 suchen, wurde die Frage explizit nach v2 gefragt :) –

+0

Genau das, was ich meinte ... Ich kam zu diesem Post, als ich nach einer Lösung für dieses Problem suchte und diese Antwort half nicht . Wird den Beitrag bearbeiten. –