如何判断何时可以安全设置 TreeView.SelectedItem?

问题描述 投票:0回答:1

这是一个非常简单的 xaml:

    <TreeView x:Name="provenanceTree" 
                  ItemsSource="{x:Bind ProvenanceTreeItems}" SelectionMode="Single"
                  SelectedItem="{x:Bind focus, Mode=TwoWay}"
                  >
        <!-- Definitions in here -->
    </TreeView>

这里的想法是,控件有一个

focus
,树视图的选择应该遵循该焦点。

大多数情况下,它有效。 但是,当焦点改变需要添加

ItemsSource
时,问题就出现了 - 也就是说:我试图在同一操作中添加一个项目并选择它。 当然,TreeView 会重绘,但不会选择任何内容 - 如果之前选择了任何内容,则会取消选择。

我尝试不在bindng中分配

SelectedItem
,而是在重新聚焦代码中分配,但我遇到了同样的问题。

我明白了:对

ItemsSource
的更改不会立即传递到 TreeView,因此我尝试选择树中没有的内容。 如何判断何时可以安全地选择新添加的项目? 有什么方法可以调整绑定,使其按预期工作吗?

c# treeview selecteditem winui
1个回答
0
投票

您只需添加新项目并将其作为

SelectedItem
传递。例如,假设
TreeView
x:Name
d TreeViewControl:

private void AddingTestButton_Click(object sender, RoutedEventArgs e)
{
    var newItem = new ProvenanceTreeItems();
    ProvenanceTreeItems.Add(newItem);
    TreeViewControl.SelectedItem = newItem;
}
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.