wpf - 通过键入在 Wpf 数据网格中查找记录

标签 wpf xaml datagrid

我有一个绑定(bind)到 Observable Members 集合的数据网格。现在我想通过输入成员名称来查找数据网格中的成员。我尝试过 IsTextSearchEnable 属性,但它没有搜索。这是我的 xaml。

<DataGrid Name="dgOtherCharges" AutoGenerateColumns="False" RowHeight="25" Grid.Row="4" AlternatingRowBackground="{StaticResource AlternateRowBackgroundBrush}" Grid.ColumnSpan="3" IsTextSearchEnabled="True" TextSearch.Text="Name"
              CanUserAddRows="False" HeadersVisibility="Column" SelectionUnit="Cell" ItemsSource="{Binding Path=MembersCollection,Mode=TwoWay}"  HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"
              VerticalGridLinesBrush="{StaticResource GridLineColorBrush}" HorizontalGridLinesBrush="{StaticResource GridLineColorBrush}">
            <DataGrid.Resources>
                <Style TargetType="{x:Type DataGridCell}">
                    <Style.Triggers>
                        <Trigger Property="DataGridCell.IsSelected" Value="True">
                            <Setter Property="Background" Value="{StaticResource ButtonSelectedBrush}"  />
                            <Setter Property="BorderBrush" Value="#A8E3FC" />
                            <Setter Property="Foreground" Value="Black" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </DataGrid.Resources>

            <DataGrid.Columns>

                <DataGridCheckBoxColumn Binding="{Binding IsCheck,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Width="50">
                    <DataGridCheckBoxColumn.ElementStyle>
                        <Style TargetType="CheckBox">
                            <Setter Property="HorizontalAlignment" Value="Center"/>
                            <Setter Property="VerticalAlignment" Value="Center"/>
                        </Style>
                    </DataGridCheckBoxColumn.ElementStyle>
                </DataGridCheckBoxColumn>
                <DataGridTextColumn Header="Member Name" Binding="{Binding Name,Mode=TwoWay}" IsReadOnly="True" Width="*"/>


            </DataGrid.Columns>
        </DataGrid>

我需要一个快速的解决方案,伙计们

最佳答案

我今天偶然发现了这个问题,以找到同一问题的解决方案。虽然 TextSearch 显然在 2012 年还不可用,但目前已经可用。

因此,为了将来引用,下面是我当前针对此问题的解决方案,其中添加了三个属性:IsTextSearchCaseSensitiveIsTextSearchEnabledTextSearch.TextPath

<DataGrid ItemsSource="{Binding Path=Directories, Mode=OneWay}"
          SelectedItem="{Binding Path=SelectedDirectory, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
          EnableRowVirtualization="False"
          EnableColumnVirtualization="True"
          VirtualizingStackPanel.IsVirtualizing="False"
          VirtualizingStackPanel.VirtualizationMode="Standard"
          IsTextSearchCaseSensitive="False"
          IsTextSearchEnabled="True"
          TextSearch.TextPath="Name">
   <DataGrid.Columns>
      <DataGridTemplateColumn Header="Name" SortMemberPath="Name" />
   </DataGrid.Columns>
</DataGrid>

关于wpf - 通过键入在 Wpf 数据网格中查找记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13815607/

相关文章:

c# - 在按下 Enter 键时绑定(bind) TextBox

c# - 在代码中初始化用户控件不起作用 - MVVM WPF

apache-flex - 如何在 Flex 4 的可编辑数据网格中禁用自动排序

wpf - 为什么我无法设置 DataGridTextColumn 的样式?

c# - 如何在通用应用程序中设置窗口大小?

c# - DataGrid foreach 实体错误

wpf - 样式触发器不会产生任何效果

wpf - 如何正确实现 INotifyDataErrorInfo?

TreeViewItem 元素中的 C# 选项卡索引

c# - 用于在 XAML 中绑定(bind) TimeSpan 的 StringFormat 不起作用