相关疑难解决方法(0)

WPF中的AutoExpand树视图

有没有办法在WPF中自动扩展树视图中的所有节点?我搜索了,甚至没有在treeview属性中找到扩展函数.

谢谢

wpf treeview expand

44
推荐指数
3
解决办法
3万
查看次数

从DataTrigger在WPF TreeViewItem上设置IsExpanded

我正在尝试使用条件模板设置IsExpanded我的TreeView项目的属性,在XAML:

<DataTrigger Binding="{Binding MyStatus}" Value="Opened">
    <Setter TargetName="MyTextBlock" Property="Foreground" Value="Green"/>
    <Setter Property="TreeViewItem.IsExpanded" Value="True" />
</DataTrigger>
Run Code Online (Sandbox Code Playgroud)

当我MyStatus从C#代码设置属性时,颜色会更改(因此DataTrigger工作),但节点不会展开.

_myItems[0].MyStatus = MyStatus.Opened;
Run Code Online (Sandbox Code Playgroud)

如何设置TreeViewItem.IsExpanded属性DataTrigger

当我启动应用程序时,颜色已正确设置,但绿色节点未展开:

启动应用程序后的屏幕截图

而改变的值之后_myItems[0].MyStatus_myItems[1].MyStatus,颜色也会随之改变,但绿点仍然没有展开.

单击Button1后的屏幕截图

完整代码(XAML)

完整的代码有点长,但它是90%的样板.

<Window x:Class="WpfApplication6.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="150" Width="250">
    <DockPanel>
        <DockPanel.Resources>
            <HierarchicalDataTemplate ItemsSource="{Binding SubItems}" x:Key="MyTemplate">
                <StackPanel Orientation="Horizontal">
                    <!-- ... -->
                    <TextBlock x:Name="MyTextBlock" Foreground="Green" Text="{Binding Name}" />
                </StackPanel>

                <HierarchicalDataTemplate.Triggers>
                    <DataTrigger Binding="{Binding MyStatus}" Value="Closed">
                        <Setter TargetName="MyTextBlock" Property="Foreground" Value="Red"/>
                        <Setter Property="TreeViewItem.IsExpanded" Value="False" />
                    </DataTrigger>
                    <DataTrigger Binding="{Binding …
Run Code Online (Sandbox Code Playgroud)

c# wpf treeview xaml treeviewitem

7
推荐指数
1
解决办法
2万
查看次数

TreeViewItem扩展时调用命令

听起来很简单?我有一个TreeView,我希望在扩展其中一个节点时发生一些事情.我正在使用MVVM,因此'something'是ViewModel中的命令.

好吧,我发现它毕竟不是那么简单.我环顾四周,尝试了一些事情.例如,使用MVVM Light的EventToCommand:

<i:Interaction.Triggers>
    <i:EventTrigger EventName="TreeViewItem.Expanded">
        <cmd:EventToCommand Command="{Binding Path=FolderNodeToggledCommand}" />
    </i:EventTrigger>
</i:Interaction.Triggers>
Run Code Online (Sandbox Code Playgroud)

此代码(基于)不起作用(没有触发;命令绑定在ViewModel中,但在展开节点时永远不会触发相应的方法).我也试过替换cmd:EventToCommand,i:InvokeCommandAction结果是一样的.第二个链接中的"解决方案"显然有点过分,我不想更改ToggleButton,因为我想使用具有自己的ToggleButton 的WPF TreeView WinForms Style.第二个链接中的第二个答案表明我可能正在尝试在TreeView上使用不存在的事件.

另一种可能的解决方案是绑定TreeViewItem的IsExpanded属性.但是我想将我绑定的对象保持为干净的DTO并在ViewModel中执行操作,而不是在绑定的对象中执行.

那么当TreeViewItem扩展时,如何在ViewModel中调用命令呢?

c# wpf treeview mvvm treeviewitem

6
推荐指数
1
解决办法
4037
查看次数

标签 统计

treeview ×3

wpf ×3

c# ×2

treeviewitem ×2

expand ×1

mvvm ×1

xaml ×1