Laden...

Listview: Spalte mit Combobox an Variable binden

Erstellt von danielpalme vor 16 Jahren Letzter Beitrag vor 16 Jahren 3.219 Views
danielpalme Themenstarter:in
51 Beiträge seit 2007
vor 16 Jahren
Listview: Spalte mit Combobox an Variable binden

Das Problem
Ich habe ein Fenster mit einer Listview. Diese hat 2 Spalten, die erste soll eine Checkbox sein, was über ein DataTemplate realisiert ist, die Zweite soll nur einen Namen als String anzeigen.
Nun binde ich eine Liste von _Items _ (siehe unten) an die Listview, der String wird angezeigt, die Checkbox ebenfalls.

Nun soll aber die CheckBox-Eigenschaft IsChecked an die "_:::

Vielen Dank schon mal für eure Tipps!!!


//Das Fenster in XAML:
<Window>
...
<Window.Resources>
   <DataTemplate x:Key="activeCellTemplate">
      <CheckBox/>
   </DataTemplate>
</Window.Resources>

<ListView x:Name="ItemsListView">
   <ListView.View>
      <GridView>
         <GridViewColumn Header="Active" CellTemplate="{StaticResource activeCellTemplate}"/>
	 <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Path=Name}"/>
      </GridView>
   </ListView.View>
</ListView>
...
</Window>

//Der Code:
public partial class Window
{
   public Window
   {
      this.InitializeComponent();

      // Liste erstellen
       List<Item> items = new List<Item>();
       items.Add(new Item(...));

      // Databinding
      this.ItemsListView.ItemsSource = items;
   }
}

// Die Item Klasse
class Item
{
   public bool Active { get; set; }
   public string Name { get; set; }
...
}
6.862 Beiträge seit 2003
vor 16 Jahren

Hmm, einfach

IsChecked={Binding Path=Active}

Aber richtig funktioniert das erst wenn du aus Active ein Dependency Property machst , dann ist auch Zweiwege Binding möglich, glaube genau das willst du doch auch oder? Das man über die Checkbox direkt den Active Wert eines ItemObjekts setzen kann oder?

Baka wa shinanakya naoranai.

Mein XING Profil.

danielpalme Themenstarter:in
51 Beiträge seit 2007
vor 16 Jahren

Original von talla
Hmm, einfach

IsChecked={Binding Path=Active}  

Mit folgendem Code wird gar keine CheckBox mehr angezeigt:

<Window.Resources>
   <DataTemplate x:Key="activeCellTemplate">
      <CheckBox IsChecked={Binding Path=Active}/>
   </DataTemplate>
</Window.Resources>

Original von talla
Aber richtig funktioniert das erst wenn du aus Active ein Dependency Property machst , dann ist auch Zweiwege Binding möglich, glaube genau das willst du doch auch oder? Das man über die Checkbox direkt den Active Wert eines ItemObjekts setzen kann oder?

Genau das will ich, aber erstmal will ich den aktuellen Wert mal angezeigt bekommen.

F
23 Beiträge seit 2007
vor 16 Jahren

Versuchs mal mit Anführungszeichen:

<CheckBox IsChecked="{Binding Active}"/>

Eine Depedency Property macht ausserhalb der UI nicht besonders viel Sinn, aber Du solltest INotifyPropertyChanged in der Item Klasse implementieren.

Florian

www.planet-xaml.net

danielpalme Themenstarter:in
51 Beiträge seit 2007
vor 16 Jahren

Original von fkruesch
Versuchs mal mit Anführungszeichen:

<CheckBox IsChecked="{Binding Active}"/>  

Anführungszeichen hab ich schon drin, sonst bekommt man gleich nen Fehler, angezeigt wird sie trotzdem nicht.

6.862 Beiträge seit 2003
vor 16 Jahren

Also bei mir funktioniert der Vorschlag, einfach

<CheckBox IsChecked="{Binding Path=Active}"/>

und schon gehts. Hab dir mal mein Versuch angehangen.

Baka wa shinanakya naoranai.

Mein XING Profil.

danielpalme Themenstarter:in
51 Beiträge seit 2007
vor 16 Jahren

Vielen Dank für deine Mühe, habe den Fehler gefunden. Active war bei mir nicht public.

6.862 Beiträge seit 2003
vor 16 Jahren

Ah okay, dachte der Code da oben von dir war nur gekürzt, weil da ist Active ja public.

Baka wa shinanakya naoranai.

Mein XING Profil.