Я новичок в программировании WPF и C #.
Я пытаюсь создать из кода TreeView для добавления данных из моей базы данных. Данные разделены на две части:
- Имя клиента
- Некоторые даты
Для меня первая часть данных является основным TreeViewItem, а вторая, даты, висит от первой в TreeView.
Все данные формируются в виде строки.
Я добавляю их в свой TreeView следующим образом:
// Adding new client to TreeView
TreeViewItem item = new TreeViewItem();
item.Header = entry.Key;
item.ItemsSource = entry.Value.ToArray(); // Adding also the dates
item.MouseDoubleClick += TreeViewItem_MouseDoubleClick; // Here is the problem
try
{
Arbol_Clientes.Items.Add(item);
}
catch( Exception error)
{
Console.WriteLine("ERROR: " + error.ToString());
}
Проблема в том, что, когда я нажимаю на дату TreeView, событие вызывается по имени клиента, например:
Когда я дважды щелкаю по красной дате, событие получает синий TreeViewItem как тот, который вызвал обработчик, в коде обработчика hijo равно "ABM"
вместо "/2019 0:00:00"
:
Код обработчика:
private void TreeViewItem_MouseDoubleClick(object sender, MouseButtonEventArgs {
var hijo = sender as TreeViewItem;
ItemsControl parent = GetSelectedTreeViewItemParent(hijo);
TreeViewItem treeitem = parent as TreeViewItem;
string Nombre_Cliente = treeitem.Header.ToString();
Etiqueta.Content = Nombre_Cliente + " " + hijo.Header.ToString();
}
Окончательный результат, который я хочу достичь со всеми этими значениями, выглядит примерно так: xaml:
<TreeView Grid.Column="0" BorderThickness="0" x:Name="Arbol_Clientes">
<TreeViewItem Header="ABM" IsExpanded="True">
<TreeViewItem Header="Enero 2019" MouseDoubleClick="TreeViewItem_MouseDoubleClick"/>
<TreeViewItem Header="Febrero 2019" MouseDoubleClick="TreeViewItem_MouseDoubleClick"/>
</TreeViewItem>
<TreeViewItem Header="VCF" IsExpanded="True">
<TreeViewItem Header="Enero 2019" MouseDoubleClick="TreeViewItem_MouseDoubleClick"/>
</TreeViewItem>
</TreeView>