3

ObservableMembersコレクションにバインドされているデータグリッドがあります。次に、メンバー名を入力して、datagridでメンバーを検索します。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>

私は迅速な解決策が必要です

4

2 に答える 2

8

私は今日この質問に出くわし、同じ問題の解決策を見つけました。TextSearch2012年には利用できなかったようですが、現在は利用できます。

したがって、今後の参考のために、この問題の現在の解決策の下に、、、およびの3つのプロパティを追加IsTextSearchCaseSensitiveIsTextSearchEnabledますTextSearch.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>
于 2014-08-21T13:26:55.283 に答える
5
<TextBox TextChanged="TextBox_TextChanged"/>

private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
      var view = CollectionViewSource.GetDefaultView((DataContext as MyViewModel).MembersCollection);
      view.Filter = o => (o as Member).Name.Contains((sender as TextBox).Text);
}

私はそれが十分に速かったことを願っています:)

于 2012-12-11T08:23:39.283 に答える