当前位置: 首页 > 知识库问答 >
问题:

组合框内Treeview的预选值

权弘新
2023-03-14

我希望在一个组合框内实现一个treeview。基本上,我希望它显示为一个组合框时,折叠,但一个treeview在组合框内,当展开。当用户点击一个节点时,我希望它显示在折叠的组合框中。到目前为止,我已经把它弄好了。

我遇到的问题是,当加载这个组合框时,如何显示C#中的默认值。请帮帮我的人,因为我快没主意了:)

    <DataTemplate x:Key="TreeViewExpanded" >

        <StackPanel>
            <TreeView x:Name="DPointTree" Margin="5" ItemsSource="{Binding Datapoint}" 
                              Tag="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ComboBox}}}"
                              >
                <TreeView.ItemTemplate>
                    <HierarchicalDataTemplate ItemsSource="{Binding Field}">
                        <TextBlock Text="{Binding Name}"/>
                                <HierarchicalDataTemplate.ItemTemplate>
                                    <DataTemplate>
                                        <TextBlock Text="{Binding}"/>
                                    </DataTemplate>
                                </HierarchicalDataTemplate.ItemTemplate>
                            </HierarchicalDataTemplate>
                </TreeView.ItemTemplate>
            </TreeView>
        </StackPanel>
        <DataTemplate.Triggers>
            <DataTrigger Binding = "{Binding Path=SelectedFieldName, Mode=TwoWay}" Value = "">
                <Setter Property = "Visibility"  Value = "Collapsed"/>
            </DataTrigger>
        </DataTemplate.Triggers>
</DataTemplate>

下面是Xaml

 <ComboBox Name="cmbFieldName" Width="150" Background="White" ItemsSource="{Binding}" SelectedItem="{Binding SelectedFieldName , Mode=TwoWay}" >
            <ComboBox.ItemTemplateSelector>
                <local:TreeViewSelector/>
            </ComboBox.ItemTemplateSelector>
        </ComboBox>

下面是传递给此的数据集。

Datapoint _datapoint2 = new Datapoint();
        _datapoint2.Name = "Alpha";
        _datapoint2.FieldID.Add("Contains Elements");
        _datapoint2.Field.Add("1 Year");
        _datapoint2.Field.Add("2 Year");
        _datapoint2.Field.Add("3 Year");

共有1个答案

鄂琛
2023-03-14

它并不漂亮,但可以在树中选择一个节点

// in code behind after the tree is declared, e.g. after InitializeComponent();
SynchronizationContext.Current.Post(delegate
{
    // expand the tree to the selected node after loading
    treeView.ExpandAll(); // or if path is known treeView.ExpandPath(...);
    SynchronizationContext.Current.Post(delegate
    {
        treeView.GetContainerFromItem(root.Children[0]).IsSelected = true;
    }, null);
}, null);
 类似资料:
  • 我有一个带有2个ComboBox的应用程序,我想将用户的选择返回到一个变量中。我该怎么做?这是我的控制器类: 我需要使用这个变量来改变应用程序的工作方式。在“methode”组合框中,我想要一个包含大量文本字段的新窗口。例如,如果用户选择3,它将打开一个包含3个文本字段的新窗口,或者(如果可能,只需在组合框下方添加3个测试字段)谢谢

  • 说到编程或java,我只是一个完全的初学者。所以一开始,我的计划是使用JavaFX(结合场景构建器)创建一个窗口,在那里我有一个按钮,可以引导我进入另一个窗口,在那里我有一个组合框。我谷歌了几个小时,想找到一种方法来填充组合框,但我找到的所有解决方案都不适合我。这就是为什么我认为我在这里犯了一些错误,我希望你能以某种方式帮助我。或者在列表中给我一个提示,我应该学习/阅读什么才能自己找到解决方案。首

  • 当折叠/展开某个节点时,其他节点的复选框被选中或未选中。 要重现这种行为,只需展开所有节点,检查、折叠和将自动检查。 我怎样才能防止这种行为?在稍后的程序中,我希望通过TreeView并获取节点的状态(已选中或未选中)来使用它们。

  • 我的表单上有2个组合框(在表单加载事件中)。第一个组合框在表单加载后从选择语句中获取一个值。我想在我的第二个组合框中使用该值。这是我的代码: 1st组合框= cbDelivery 2de组合框= cbOrderNo 此组合框位于: private void CB delivery _ selectedindex changed(对象发送方,事件参数e) 因此,一旦我从1ste组合框中选择一个值,我

  • 我正在建立一个简单的可编辑组合框与自动完成。我想根据内部TextField的内容筛选组合框的内容。 我设法使其工作,但当从TextField中删除字符时,我面临一个重新应用自动完成逻辑的问题。 从我所看到的情况来看,在按下键的事件上,文本字段的内容还不包含添加的字符。 所以我只是做了一个简单的逻辑来添加KeyEvent的字符串版本来模拟TextField的内容。我制作了这个灯塔,我需要有全文来应用

  • 我使用Saxon CE和XSLT 2.0在页面上生成和操作控件。生成组合框不是问题,但当我更改组合框时,似乎无法从组合框的选项条目中获取值。下面是示例性XSLT代码: 我想做的是当用户更改组合框的值时,他们选择的选项的值存储在变量$myVal中。然后我使用该变量来影响主页上的转换。现在我拥有的根本不起作用(目前它获取所有选项的所有值,而不是用户选择的那个)。 思想?