我想双击访问WPF TreeViewItem。在我的WPF中,它看起来像这样:
<TreeView x:Name="ExerciseTreeView" Background="#FFF9F9F9" MouseDoubleClick="Exercise_MouseDoubleClick" ScrollViewer.VerticalScrollBarVisibility="Auto" Grid.Column="2" />
在我的C#代码中,我像这样添加TreeViewItems(列表中有一些物理治疗任务):
RumpfItem.Header = "Rumpf";
ObereItem.Header = "Obere Extremität";
UntereItem.Header = "Untere Extremität";
DehnenItem.Header = "Dehnen";
FaszienItem.Header = "Faszientraining";
foreach(var item in Model.Categories_List)
{
Task task = Model.Task_List.First(t => t.TaskID == item.TaskID);
if (item.CategoryID == 1)
{
RumpfItem.Items.Add(new TreeViewItem() { Header = task.Name });
}
if (item.CategoryID == 2)
{
ObereItem.Items.Add(new TreeViewItem() { Header = task.Name });
}
if (item.CategoryID == 3)
{
UntereItem.Items.Add(new TreeViewItem() { Header = task.Name });
}
if (item.CategoryID == 4)
{
DehnenItem.Items.Add(new TreeViewItem() { Header = task.Name });
}
if (item.CategoryID == 5)
{
FaszienItem.Items.Add(new TreeViewItem() { Header = task.Name });
}
}
ExerciseTreeView.Items.Add(RumpfItem);
ExerciseTreeView.Items.Add(ObereItem);
ExerciseTreeView.Items.Add(UntereItem);
ExerciseTreeView.Items.Add(DehnenItem);
ExerciseTreeView.Items.Add(FaszienItem);
OpenTrainingPlan_Tab();
它可以正确显示,但是当我双击TreeViewItem时,没有任何反应。那么如何访问在C#代码中单击的任务?
答案 0 :(得分:1)
您可以通过将事件设置为每个项目来解决此问题。可以通过设置以下项的样式来完成:
<TreeView x:Name="MyTreeView">
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<EventSetter Event="MouseDoubleClick"
Handler="HandleItemDoubleClick"/>
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
比方说,您的树状视图包含最少的项,例如
public class Item
{
public string Name { get; set; }
}
其中包含一些物品:
MyTreeView.Items.Add(new Item { Name = "1" });
MyTreeView.Items.Add(new Item { Name = "2" });
然后,您可以在处理程序中访问被单击的项目,例如:
private void HandleItemDoubleClick(object sender, RoutedEventArgs e)
{
if (((TreeViewItem)sender).DataContext is Item item)
{
Debug.WriteLine(item.Name);
}
}