小编Jos*_*osh的帖子

WPF ListBox IndexFromPoint

我正在WPF ListBoxes之间执行拖放操作,我希望能够在它被删除的位置插入集合而不是列表的末尾.

有没有人知道类似于WinForms ListBox IndexFromPoint函数的解决方案?

c# wpf wpf-controls

4
推荐指数
1
解决办法
4885
查看次数

用户选择子项后,TreeView自动选择父级

在我的窗口中,我有一个TreeView和TextBox.假设TextBox用于编写自定义脚本,TreeView是一种选择要插入的函数的方法; 想想Crystal Report脚本编辑器.

我的目标是让用户单击TreeView的一个子项,并将该子项插入TextBox.子项是函数签名,位于父节点下.然后,用户可以导航到TextBox,选择一个功能参数并将其替换为另一个功能签名.为此,我处理TreeView的SelectedItemChanged事件,设置TextBox的SelectedText,然后尝试在文本更改后突出显示该文本.

正确地交换TextBox的SelectedText.但是,文本未突出显示,滚动条未滚动到所选文本.

这是我编写的测试项目中的XAML,用于重现行为:

  <Window x:Class="SelectedTextWeirdness.MainWindow"
          xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
          xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:System="clr-namespace:System;assembly=mscorlib"
          xmlns:SelectedTextWeirdness="clr-namespace:SelectedTextWeirdness" Title="MainWindow" Width="600" Height="600"
          x:Name="Me">
     <Grid>
        <Grid.RowDefinitions>
           <RowDefinition Height="Auto" />
           <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>
        <TreeView Grid.Row="0" x:Name="treeView" ItemsSource="{Binding ElementName=Me, Path=TreeViewItems, Mode=TwoWay}" 
                  SelectedItemChanged="treeView_SelectedItemChanged" Margin="10">
           <TreeView.Resources>
              <HierarchicalDataTemplate DataType="{x:Type SelectedTextWeirdness:Parent}" ItemsSource="{Binding Children}">
                 <TextBlock Text="{Binding Name}" />
              </HierarchicalDataTemplate>
              <DataTemplate DataType="{x:Type SelectedTextWeirdness:Child}">
                 <TextBlock Text="{Binding Name}" />
              </DataTemplate>
           </TreeView.Resources>
        </TreeView>
        <TextBox Grid.Row="1" x:Name="scriptTextBox" Margin="10" Height="200" Width="Auto" FontFamily="Consolas, Courier New" 
                 HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Auto"
                 MaxLines="9999" AcceptsReturn="True" AcceptsTab="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 
                 Text="{Binding Path=Script, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                 />
     </Grid>
  </Window>
Run Code Online (Sandbox Code Playgroud)

这是代码隐藏:

  using …
Run Code Online (Sandbox Code Playgroud)

c# wpf treeview textbox selecteditemchanged

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

标签 统计

c# ×2

wpf ×2

selecteditemchanged ×1

textbox ×1

treeview ×1

wpf-controls ×1