+-
c#-从列标题中的文本框中筛选WPF DataGrid值
我按照以下链接( filter wpf datagrid values from a textbox)中的建议创建了图A.当我按下Button时,它可以根据TextBox中的内容过滤DataGrid.

但是,一旦我将Button和TextBox移到DataGrid的列标题内(如图B所示).Button仍然有效,但是TextBox的绑定不起作用,因为它在代码中显示为null.

http://i42.tinypic.com/2quivpx.png

链接之间所做的唯一真正的更改是我的XAML,其中将TextBox和Button放在DataGridTemplateColumn标题内.

<Grid DataContext="{Binding ElementName=UI}" >
    <DataGrid AutoGenerateColumns="False" Height="184" HorizontalAlignment="Left" Margin="12,23,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="384" ItemsSource="{Binding DataGridCollection}">
           <DataGrid.Columns>
            <DataGridTemplateColumn>
                <DataGridTemplateColumn.HeaderTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <TextBox Name="IDSearcBox" Text="{Binding FilterString}" Width="100"/>
                            <Button  Name="IDSearchButton" Click="IDButton_Click"  Content="I" Width="30"/>
                        </StackPanel>
                    </DataTemplate>
                </DataGridTemplateColumn.HeaderTemplate>
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding ID}"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
            <DataGridTemplateColumn>
                <DataGridTemplateColumn.HeaderTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <TextBox Name="NameSearchBox" Text="{Binding FilterString}" Width="100"/>
                            <Button  Name="NameSearchButton" Click="NameSearchButton_Click"  Content="N" Width="30"/>
                        </StackPanel>
                    </DataTemplate>
                </DataGridTemplateColumn.HeaderTemplate>
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Name}"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
            <DataGridTextColumn Header="SomethingElse" Binding="{Binding SomethingElse}"/>
        </DataGrid.Columns>
    </DataGrid>
</Grid>

任何帮助,将不胜感激!我整天都在为此挠脑筋!

(我本该在其他帖子上发布一些建议,但我看不到任何选择!)

最佳答案
现在,文本框位于DataGrids ItemSource DataContext中,

尝试设置TextBox的DataContext,将您带回到UI DataContext

<TextBox Name="IDSearcBox" Text="{Binding FilterString, ElementName=UI}"
点击查看更多相关文章

转载注明原文:c#-从列标题中的文本框中筛选WPF DataGrid值 - 乐贴网