如何通过C#而不是XAML为TreeView编写触发器和设置器

如何通过C#而不是XAML为TreeView编写触发器和设置器,c#,.net,wpf,xaml,dependency-properties,C#,.net,Wpf,Xaml,Dependency Properties,如何从代码隐藏而不是XAML向TreeView添加以下基于XAML的触发器 <TreeView> <TreeView.Resources> <Style TargetType="{x:Type TreeViewItem}"> <Setter Property="ContextMenu"> <Setter.Value>

如何从代码隐藏而不是XAML向TreeView添加以下基于XAML的触发器

<TreeView>
        <TreeView.Resources>
            <Style TargetType="{x:Type TreeViewItem}">
                <Setter Property="ContextMenu">
                    <Setter.Value>
                        <ContextMenu>
                            <MenuItem Header="Menu Item 1" />
                            <MenuItem Header="Menu Item 2" />
                        </ContextMenu>
                    </Setter.Value>
                </Setter>
            </Style>
        </TreeView.Resources>
        <TreeViewItem Header="Item 1">
            <TreeViewItem Header="Sub-Item 1"/>
        </TreeViewItem>
        <TreeViewItem Header="Item 2"></TreeViewItem>
    </TreeView>
下面是样式中的setter:

<Setter Property="my:TreeViewCustomizer.ContextMenuOpened"
        Value="{Binding ContextMenu.IsOpen, RelativeSource={RelativeSource Self}}" />

参考问题:

使用以下语句完成

SolidColorBrush colorBrush=新的SolidColorBrush(Colors.DodgerBlue);myTreeView.Resources.Add(SystemColors.ControlBrushKey,colorbush)

:)

<Setter Property="my:TreeViewCustomizer.ContextMenuOpened"
        Value="{Binding ContextMenu.IsOpen, RelativeSource={RelativeSource Self}}" />
<MultiTrigger>
  <MultiTrigger.Conditions>
    <Condition Property="IsSelected" Value="true"/>
    <Condition Property="my:TreeViewCustomizer.ContextMenuOpened" Value="true"/>
  </MultiTrigger.Conditions>
  <Setter TargetName="Bd"
          Property="Background"
          Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
  <Setter Property="Foreground"
          Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>
</MultiTrigger>
TreeView _objTreeView =  new TreeView();