首页 > 解决方案 > c# wpf treeviewitem with contextmenu

问题描述

我只想用普通的treeviewitem右键单击menucontext。我能找到的所有例子,它要求绑定一些东西。但我只是不想绑定任何东西。

例如:

            TreeViewItem ceo = new TreeViewItem() { Header = "CEO" };
            TreeViewItem manager1 = new TreeViewItem() { Header = "Manager1" };
            TreeViewItem manager2 = new TreeViewItem() { Header = "Manager2" };
            TreeViewItem person1 = new TreeViewItem() { Header = "person1" };
            TreeViewItem person2 = new TreeViewItem() { Header = "person2" };

            manager1.Items.Add(person1);
            manager2.Items.Add(person2);
            ceo.Items.Add(manager1);
            ceo.Items.Add(manager2);

我只想制作子节点 menucontext ,可以吗?

标签: c#wpf

解决方案


您必须创建一个Style以舒适的方式完成此操作。将其Style放入 aResourceDictionary范围内,TreeView以便您可以轻松找到它,或者在隐含的情况下Style它可以自动应用。

以下隐式Style将对ContextMenu所有添加相同的内容TreeViewItems

应用程序.xaml

<Application>
  <Application.Resources>
    <ResourceDictionary>
      <Style TargetType="TreeViewItem">
        <Setter Property="ContextMenu">
          <Setter.Value>
            <ContextMenu>
              <MenuItem Header="_Bold"
                        IsCheckable="True"
                        Checked="Bold_Checked"
                        Unchecked="Bold_Unchecked" />
              <MenuItem Header="_Italic"
                        IsCheckable="True"
                        Checked="Italic_Checked"
                        Unchecked="Italic_Unchecked" />
              <Separator />
              <MenuItem Header="Increase Font Size"
                        Click="IncreaseFont_Click" />
              <MenuItem Header="_Decrease Font Size"
                        Click="DecreaseFont_Click" />
            </ContextMenu>
          </Setter.Value>
        </Setter>
      </Style>
    </ResourceDictionary>
  </Application.Resources>
</Application>

或者(但不推荐)您可以创建StyleContextMenu使用 C# 并手动分配Style给每个TreeViewItem,或者将其添加到ResourceDictionary例如Application.Current.Resources. 但它比使用 XAML 更复杂且可读性更低。


推荐阅读