从列标题中的文本框筛选WPF DataGrid值

3
我按照以下链接的建议(从文本框中过滤wpf datagrid值)创建了图A。当我按下按钮时,它允许我根据文本框中的内容过滤DataGrid。
然而,一旦我将按钮和文本框移动到DataGrid的列标题中,就像在图B中一样。按钮仍然有效,但是文本框的绑定却没有作用,因为它在代码中显示为空。

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

在链接中所做的唯一真正变化的是我的XAML,我将我的TextBox和Button放在了DataGridTemplateColumn Header中。
<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>

任何关于这个的帮助都将不胜感激!我已经在思考这个问题一整天了!
(我本来想在另一个帖子上寻求一些建议,但是我没有看到任何选项!)
1个回答

3
Textbox现在位于DataGridsItemSource DataContext中。请尝试将TextBoxDataContext设置回UI的DataContext
<TextBox Name="IDSearcBox" Text="{Binding FilterString, ElementName=UI}"

只要你知道怎么做,就很容易了。非常感谢 @sa_ddam213。 - metoyou

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接