Autor Beitrag
BlackMatrix
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 243
Erhaltene Danke: 1



BeitragVerfasst: Mi 24.10.12 03:14 
Guten Abend,

Ich bin noch ein Neuling in Sachen WPF und Datenbindung. Mein Problem ist folgendes. Ich fülle mein DataGrid zur Laufzeit (Programmstart) mit einem binären Serialisierer. Nun sollen die Rows (oder z.B. die Schriftfarbe) meiner Objekte im DataGrid unterschiedlich eingefärbt werden. Die Objekte haben ein Enum als Eigenschaft. Nun bekomme ich es leider nicht hin, dieses Eigenschaft im XAMl-Code meinem ValueConverter zu übergeben.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
    [ValueConversion(typeof(MyEnum), typeof(Brush))]
    public class MyEnumConverter : IValueConverter
    }
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            // ...
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotSupportedException();
        }
    }


Nun habe ich folgendes im XAML Code geschrieben:

ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
<Window x:Class="MyApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:MyApp"
        Title="MyApp" Height="350" Width="525" Closing="WindowClosing">
    <Window.Resources>
        <local:MyEnumConverter x:Key="myEnumConverter ">
        </local:MyEnumConverter >
    </Window.Resources>


Und hier fehlt nun wahrscheinlich der richtige Code:

ausblenden XML-Daten
1:
2:
3:
                    <DataGrid Name="dataGrid">
                        <DataGridRow Binding="{Binding Path=MyEnum}"></DataGridRow>
                    </DataGrid>


Der Converter (objekt: myEnumConverter), die Eigenschaft (MyEnum) und das gebundende Objekt muss in den XAML Code noch rein. Kann mir das jemand erläutern?

Danke euch.

Liebe Grüße.

Moderiert von user profile iconChristian S.: C#- durch XML-Tags ersetzt
daeve
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 116
Erhaltene Danke: 3

Windows (XP Pro, 7 Ultimate x64)
C#,WPF,Java,ASP.Net, VS 2010 Ultimate (x86)
BeitragVerfasst: Mi 24.10.12 19:17 
Hallo

Du hast ja oben den Converter angegeben in den Resources jetzt musst du aber deinem Datagrid auch noch einen Converter angeben...

z.B Converter="{StaticResource myConverter, ConverterParameter=myParameter}"

gruss David
BlackMatrix Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 243
Erhaltene Danke: 1



BeitragVerfasst: Mi 24.10.12 23:15 
Also prinzipiell ist es erstmal richtig das so mit dem Converter zu lösen?

Mir stellt sich vorallem die Frage, wie kann man meiner Converterklasse die Eigenschaft, des zur Laufzeit gebunden Objekts, MyEnum übergeben?

Also wie drückt man in XAML Code aus, nimm das an die Row gebundene Objekt und davon die Eigenschaft MyEnum.

Abhängig von dieser Eigenschaft färbst du z.B. die Hintergrundfarbe der Row.
daeve
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 116
Erhaltene Danke: 3

Windows (XP Pro, 7 Ultimate x64)
C#,WPF,Java,ASP.Net, VS 2010 Ultimate (x86)
BeitragVerfasst: Do 25.10.12 12:54 
Ich würde das mit einem Event lösen, sobald sich der Inhalt ändert...

Der Converter ist soviel ich weis für ein gebundenes Propertie da. ( int zu string oder der gleichen )

Wenn du das mit XAML machen möchtest, wäre der Weg ein Propertie zu definieren und dieses an eine Row zu binden ( nur für die Farbe )
im Converter wählst du dann die Farbe aus...

Aber einfacher und mit weniger Code ist diese lösung nicht.
BlackMatrix Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 243
Erhaltene Danke: 1



BeitragVerfasst: Fr 26.10.12 01:57 
Mein Objekt, welches an die Row gebunden ist, hat eine Property. Das Einzige ist eben, dass die Bindung erst zur Laufzeit erfolgt und ich nun im XAMl Code ausdrücken muss, dass die Property des gebundenen Objekts an den Converter weitergegeben wird.
daeve
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 116
Erhaltene Danke: 3

Windows (XP Pro, 7 Ultimate x64)
C#,WPF,Java,ASP.Net, VS 2010 Ultimate (x86)
BeitragVerfasst: Fr 26.10.12 10:24 
how to assign color to wpf datagrid cell dynamically

das sollte dir helfen

Moderiert von user profile iconTh69: Full Quote entfernt
Moderiert von user profile iconTh69: URL-Titel hinzugefügt