Laden...

Checkbox in Listview soll Zeilenhintergrund ändern

Erstellt von Runshak vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.530 Views
R
Runshak Themenstarter:in
71 Beiträge seit 2014
vor 9 Jahren
Checkbox in Listview soll Zeilenhintergrund ändern

Hallo

ich habe ein WPF-Fenster erstellt und in diesem ein ListView platziert. Dieses habe ich nun gefüllt mit einigen Werten (über Bindings mit Properties) und dann habe ich noch eine Checkboxspalte eingeführt (auch über Bindings mit Properties)

public int AddCheck(ref GridView mGVt, string strName)
{

	GridViewColumn column = default(GridViewColumn);
	column = new GridViewColumn();
	column.Header = strName;
	dynamic mData = new DataTemplate();
	mData.DataType = typeof(CheckBox);

	dynamic mFWF = new FrameworkElementFactory(typeof(CheckBox));
	dynamic n = new System.Windows.Data.Binding(strName);
	n.Mode = BindingMode.TwoWay;
	mFWF.SetBinding(CheckBox.IsCheckedProperty, n);



	mData.VisualTree = mFWF;
	column.CellTemplate = mData;
	mGVt.Columns.Add(column);
}

das ist der Code für die Checkbox

Nun möchte ich, dass wenn ich bei einer Spalte die Checkbox auf true setze (also auswähle), dass dann sich diese Reihe zb. rotfärbt (der Background)...möglichst soll das über Binding geschehen...aber mir fehlt grad ne idee...ich weiß nicht wo ich da anfangen muss -.-

709 Beiträge seit 2008
vor 9 Jahren

Hallo Runshak,

du kannst die Hintergrundfarbe an den Wert der Checked-Eigenschaft der Checkbox binden und einen Converter angeben, der die entsprechende Hintergrundfarbe zurückgibt.

2.207 Beiträge seit 2011
vor 9 Jahren

Hallo Runshak,

wenn du schon mit MVVM arbeitest, dann mach es richtig und setz die Bindings im XAML. Mach dir eine Listview mit einem Grid und dann gibst du als erste Spalte die Checkbox an und bindest das entsprechend.

Mit dem Background pro Zeile genau das gleiche: Binde das und behandle es einfach im Code. Ist nichts andres als ein Binding. Oder direkt im XAML mit Converter.

Gruss

Coffeebean

R
Runshak Themenstarter:in
71 Beiträge seit 2014
vor 9 Jahren

Ich hatte aber die Aufgabe das komplette ListView dynamisch zu erzeugen...dann geht das doch nur so oder?

2.207 Beiträge seit 2011
vor 9 Jahren

Hallo Runshak,

wenn du eine Liste an die ListView bindest, ists doch automatisch dynamisch. Du legst ja nur das Template fest, wie jeder Eintrag aussehen soll. Das ist (u.a.) der Sinn von Bindings 😉

Gruss

Coffeebean

R
Runshak Themenstarter:in
71 Beiträge seit 2014
vor 9 Jahren

achso 😃 ja das macht Sinn 😄

aber ich steh grad total auf dem Schlauch...ich komm einfach auf keinen grünen Zweig...

folgende Fragen bekomm ich grad nicht gelöst...

  • kann ich das was ich will in die selbe Methode schreiben (das Codebeispiel)
  • Wie kann ich die Reihe auswählen bzw an die Checkbox binden
  • ich muss schon eine weitere Property erstellen für den Background oder?

...

2.207 Beiträge seit 2011
vor 9 Jahren

Hallo Runshak,

ich glaube du hat das mit den Bindings noch nicht verstanden. Mach dir eine ListView und binde an die ItemSource eine Liste deiner Objekte.

ItemsSource="{Binding ...}"

Die Darstellung machst du in der View. Genauso wie den Background. Den kannst du auch aus dem XAML heraus machen an einem eigenen Property. Eben mit Converter oder machst es über das ViewModel an deinen Objekten. Gibt mehrere Möglichkeiten. Der Converter ist hier aber wohl das beste.

Gruss

Coffeebean