SelectedIndex in Grid

05/10/2008 - 21:27 von Wojtek Kusch | Report spam
Hallo!
Ich habe eine WPF-BrowserApp und in dieser ein "Grid". Eine der Column
ist die Combobox. Wenn der User keine Zeile in der Tabelle markiert,
sondern nur eine Combobox in der Zeile aufmacht und aus dieser einen
Eintrag auswàhlt, möchte ich die geànderte Zeile (in der die Combobox
geöffnet worden ist) haben.

Folgender Code funktioniert aber frü meine Zwecke nicht richtig,
esliefert nicht die Zeilennummer, sondern immer -1.



private void ComboBox_DropDownClosed(object sender, EventArgs e)
{
int selectedIdex = myTable.SelectedIndex; <-- -1
}



<StackPanel Name="MyGridPanel" IsEnabled="{Binding Path=IsInsuredPerson}">
<ListView Name="myTable" ItemsSource="{Binding}">
<ListView.View>
<GridViewColumn Header="Header1" Width="100">

<GridViewColumn.CellTemplate>
<DataTemplate>
<ComboBox Width="90" ItemsSource="{Binding Path=ProzAnzeige}"
DisplayMemberPath="Type" IsSynchronizedWithCurrentItem="True"
DropDownClosed="ComboBox_DropDownClosed"></ComboBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</StackPanel>


Wie kann ich erreichen, auch wenn keine Zeile selektiert ist, ich die
Zeile herausbekomme, in der die Combobox veràndert worden ist?
Danke für die Hilfe!
Wojtek
 

Lesen sie die antworten

#1 Frank Dzaebel
07/10/2008 - 07:28 | Warnen spam
Hallo Wojtek,

Folgender Code funktioniert aber frü meine Zwecke nicht richtig,
esliefert nicht die Zeilennummer, sondern immer -1.

private void ComboBox_DropDownClosed(object sender, EventArgs e)
{ int selectedIdex = myTable.SelectedIndex; <-- -1
}



Die Zeile (der ListViewItem) in dem die ComboBox sich befindet,
ist ja nicht selektiert in diesem Szenario. (ListViewItem.IsSelected).
Hier kann Du über das Vorgàngerobjekt des Visual gehen:
Zum Beispiel so:

private void ComboBox_DropDownClosed(object sender, EventArgs e)
{
ItemCollection items = myTable.Items;
DependencyObject dpo = sender as DependencyObject;
for (int selected = 0; selected < items.Count; selected++)
if (((ListViewItem)items[selected]).IsAncestorOf(dpo))
MessageBox.Show("Selektierter Index: " +selected);
}

________________

Den selektierten Item der WPF-ComboBox selber
kann man ja über "((ComboBox) sender).SelectedIndex"
erhalten.


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen