Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在wpf中从dataGrid搜索数据时出错_Wpf_Search_Datagrid_Textbox - Fatal编程技术网

在wpf中从dataGrid搜索数据时出错

在wpf中从dataGrid搜索数据时出错,wpf,search,datagrid,textbox,Wpf,Search,Datagrid,Textbox,我尝试使用以下XAML在数据网格中搜索 <DataGrid x:Name="grid" local:DataGridTextSearch.SearchValue="{Binding ElementName=SearchBox, Path=Text, UpdateSourceTrigger=PropertyChanged}" ItemsSource="{Binding TestData}" > <DataGrid.Resources>

我尝试使用以下XAML在
数据网格中搜索

<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>

你搞乱了名称空间、引用和(我猜)Resharper。 首先,无需为DataGrid指定名称空间,它是标准控件,因此如果无法识别,可能会在项目引用中遗漏一些程序集

然后-检查您的名称空间-我猜x:Class=“Window1”是错误的,因为那里通常有项目名称空间前缀

第三,在使用任何名称空间(包括“local”)之前,您需要先定义它,比如xmlns:local=“clr namespace:your namespace goes here”,这样local:DataGridTextSearch和类似的表达式在使用之前就不起作用了

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

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

<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>