Hallo zusammen,
ich versuche mich gerade etwas in C# WPF MVVM und habe ein Problem. Ich
möchte eine Zeile auswählen und mit Hilfe von Contextmenu eine Message
anzeigen. Mit dem Inhalt:
1. welche Zeile ausgewählt wurde
2. was ist der Inhalt der ersten Spalte von dieser Zeile?
Ich habe schon Stunden verbracht, um eine Lösung zu finden und komme mit
keiner der Vorschläge zu recht.
Kann mir einer helfen und sagen wie ich das machen kann? Hier ist mein
Code:
XAML- Code
1 | <DataGrid ItemsSource="{Binding Items}" AutoGenerateColumns="False" IsReadOnly="True" Margin="5,50,5,25">
|
2 | <DataGrid.Columns>
|
3 | <DataGridTextColumn Header="number" Binding="{Binding number}"/>
|
4 | <DataGridTextColumn Header="name" Binding="{Binding name}"/>
|
5 | </DataGrid.Columns>
|
6 | <DataGrid.ContextMenu>
|
7 | <ContextMenu >
|
8 | <MenuItem Header="open customer" Command="{Binding Path=OpenCustomerCommand}"/>
|
9 | </ContextMenu>
|
10 | </DataGrid.ContextMenu>
|
11 | </DataGrid>
|
ViewModel- Code
1 | class CustomerOverviewViewModel : DependencyObject
|
2 | {
|
3 | public ICommand OpenCustomerCommand { get; set; }
|
4 |
|
5 | public ICollectionView Items
|
6 | {
|
7 | get { return (ICollectionView)GetValue(ItemsProperty); }
|
8 | set { SetValue(ItemsProperty, value); }
|
9 | }
|
10 |
|
11 | // Using a DependencyProperty as the backing store for MyProperty. This enables animation, styling, binding, etc...
|
12 | public static readonly DependencyProperty ItemsProperty =
|
13 | DependencyProperty.Register("Items", typeof(ICollectionView), typeof(CustomerOverviewViewModel), new PropertyMetadata(null));
|
14 |
|
15 | public CustomerOverviewViewModel()
|
16 | {
|
17 | OpenCustomerCommand = new RelayCommand(arg => OpenCustomerMethod());
|
18 | Items = CollectionViewSource.GetDefaultView(LinkToMySQL.GetDBData("customers"));
|
19 | }
|
20 |
|
21 | private void OpenCustomerMethod()
|
22 | {
|
23 |
|
24 | MessageBox.Show("selected row + name"); // hier soll die Aswahl angezeigt werden
|
25 | }
|
26 | }
|
ViewModel- Code
1 | class LinkToMySQL
|
2 | {
|
3 | public static DataTable GetDBData(string DBtable)
|
4 | {
|
5 | string stringDB = ConfigurationManager.ConnectionStrings["MysqlConnectionString"].ConnectionString;
|
6 | DataTable dt = new DataTable();
|
7 | try
|
8 | {
|
9 | using (MySqlConnection myConn = new MySqlConnection(stringDB))
|
10 | {
|
11 | MySqlCommand cmd = new MySqlCommand("select * FROM " + DBtable + "", myConn);
|
12 | myConn.Open();
|
13 |
|
14 | dt.Load(cmd.ExecuteReader());
|
15 | return dt;
|
16 | }
|
17 | }
|
18 | catch (Exception ex)
|
19 | {
|
20 | MessageBox.Show(ex.Message);
|
21 | }
|
22 | return dt;
|
23 | }
|
24 | }
|