【问题标题】:Getting an error in searching data from dataGrid in wpf在 wpf 中从 dataGrid 中搜索数据时出错
【发布时间】:2013-05-22 14:54:22
【问题描述】:

我尝试使用以下 XAML 搜索 dataGrid

<DataGrid x:Name="grid" local:DataGridTextSearch.SearchValue="{Binding ElementName=SearchBox, Path=Text, UpdateSourceTrigger=PropertyChanged}" 
          ItemsSource="{Binding TestData}" >
    <DataGrid.Resources>
        <local:SearchValueConverter x:Key="SearchValueConverter" />
        <Style TargetType="{x:Type DataGridRow}">
            <Setter Property="local:DataGridTextSearch.IsTextMatch">
                <Setter.Value>
                    <MultiBinding Converter="{StaticResource SearchValueConverter}">
                        <Binding RelativeSource="{RelativeSource Self}" Path="DataContext.MyProperty" />
                        <Binding RelativeSource="{RelativeSource Self}" Path="(local:DataGridTextSearch.SearchValue)" />
                    </MultiBinding>
                </Setter.Value>
            </Setter>
            <Style.Triggers>
                <Trigger Property="local:DataGridTextSearch.IsTextMatch" Value="True">
                    <Setter Property="IsSelected" Value="True" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </DataGrid.Resources>
</DataGrid>

我从here得到它

但是它给了我一个错误,DataGrid 没有定义。于是我把&lt;DataGrid&gt;改成了&lt;my:DataGrid&gt;

现在它在第 1 行给了我以下错误: 在 DataGridTextSearch 类型中找不到可附加属性 SearchValue。

第 1 行的另一个错误。 3: 未找到类型 local:SearchValueConverter。确认您没有丢失程序集引用并且所有引用程序集都已构建。

我的窗口的 XAML 看起来像:

<Window x:Class="Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="532" xmlns:my="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit">
    <Grid>
        <TextBox Height="29" Margin="104,22,147,0" Name="txt" VerticalAlignment="Top" AutoWordSelection="True" />
        <my:DataGrid x:Name="grid" local:DataGridTextSearch.SearchValue="{Binding ElementName=SearchBox, Path=Text, UpdateSourceTrigger=PropertyChanged}" 
              ItemsSource="{Binding TestData}" >
            <my:DataGrid.Resources>
                <local:SearchValueConverter x:Key="SearchValueConverter" />
                <Style TargetType="{x:Type DataGridRow}">
                    <Setter Property="local:DataGridTextSearch.IsTextMatch">
                        <Setter.Value>
                            <MultiBinding Converter="{StaticResource SearchValueConverter}">
                                <Binding RelativeSource="{RelativeSource Self}" Path="DataContext.MyProperty" />
                                <Binding RelativeSource="{RelativeSource Self}" Path="(local:DataGridTextSearch.SearchValue)" />
                            </MultiBinding>
                        </Setter.Value>
                    </Setter>
                    <Style.Triggers>
                        <Trigger Property="local:DataGridTextSearch.IsTextMatch" Value="True">
                            <Setter Property="IsSelected" Value="True" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </my:DataGrid.Resources>
        </my:DataGrid>
    </Grid>
</Window>

【问题讨论】:

    标签: wpf search datagrid textbox


    【解决方案1】:

    你搞砸了命名空间、引用和(我猜)Resharper。 首先 - 无需为 DataGrid 指定命名空间 - 它是标准控件,因此如果无法识别 - 您可能真的错过了项目引用中的一些程序集。

    然后 - 检查你的命名空间 - 我猜 x:Class="Window1" 是错误的,因为通常那里有项目命名空间前缀。

    第三,在使用任何命名空间之前,包括“local”,你需要先定义它,比如 xmlns:local="clr-namespace:your namespace goes here",所以 local:DataGridTextSearch 和类似的表达式在此之前不起作用你这样做。

    最后,在继续修复 XAML 警告之前构建您的解决方案 - 通常,如果您做的一切正确,它们会在构建后消失。

    我的建议 - 创建一个新的空 WPF 应用程序项目,从您提到的帖子中复制所有代码(包括代码隐藏)并检查您的问题是否仍然存在。

    【讨论】:

      猜你喜欢
      • 2017-08-06
      • 1970-01-01
      • 2023-03-31
      • 2019-02-01
      • 2021-04-22
      • 2015-05-05
      • 1970-01-01
      • 1970-01-01
      • 2017-05-14
      相关资源
      最近更新 更多