【问题标题】:Treeview selectedItem highlight on startupTreeview selectedItem 在启动时突出显示
【发布时间】:2016-03-27 16:25:57
【问题描述】:

我的 xaml 中有一个树视图,如下所示。我通过交互来使用选中的项目并绑定事件。

    <DataTemplate x:Key="TreeTemplate">
        <TreeView Name="TreeView" ItemsSource="{Binding ItemList}" ItemTemplate="{StaticResource ChildTemplate}">
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="SelectedItemChanged">
                    <i:InvokeCommandAction
                        Command="{Binding SetSelectedItemCommand}"
                        CommandParameter="{Binding SelectedItem, ElementName=TreeView}"/>
                </i:EventTrigger>
            </i:Interaction.Triggers>
        </TreeView>
    </DataTemplate>

除了第一次加载应用程序时,这一切都很好。即使在启动时设置了 SelectedItem 属性,树视图也不会突出显示该项目,除非触发了导致 SelectedItemChanged 事件的鼠标事件。 关于如何做到这一点的任何想法?

我的数据上下文在 xaml 后面的代码中

        myView = new MyViewModel();    
        this.DataContext = myView;

        InitializeComponent();

【问题讨论】:

    标签: c# wpf xaml treeview


    【解决方案1】:

    这将起作用:

    <DataTemplate x:Key="TreeTemplate">
        <TreeView Name="TreeView" ItemsSource="{Binding ItemList}" ItemTemplate="{StaticResource ChildTemplate}">
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="SelectedItemChanged">
                    <i:InvokeCommandAction
                        Command="{Binding SetSelectedItemCommand}"
                        CommandParameter="{Binding SelectedItem, ElementName=TreeView}"/>
    
                 <i:EventTrigger EventName="Loaded">
                    <i:InvokeCommandAction
                        Command="{Binding SetSelectedItemCommand}"
                        CommandParameter="{Binding SelectedItem, ElementName=TreeView}"/>
                </i:EventTrigger>
            </i:Interaction.Triggers>
        </TreeView>
    </DataTemplate>
    

    【讨论】:

    • 这是一个非常好的建议。我以前没想过,但第二个问题是在我能够设置我的属性之前调用了“加载”。
    • Loaded 在您的 ViewModels 构造函数之后调用,在您的 Viewmodels 构造函数中您应该完成所有绑定。
    • 我正在我的构造函数中加载一个文件。根据文件加载属性。在代码可以设置属性之前,调用了加载的事件,此时属性为空
    • 如何为视图定义数据上下文?
    • 根据您的代码,您的 viewModel 应该在加载 UI 之前构建,如果您在 ViewModel 构造函数和 Loaded 事件中都设置了一些断点,那么您可以看到哪个是第一个被调用的。我还是觉得有其他问题
    猜你喜欢
    • 1970-01-01
    • 2014-11-11
    • 2012-05-13
    • 1970-01-01
    • 2014-05-02
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多