关闭了RecognizesAccessKey的WPF DataGrid

Ram*_*No5 1 c# wpf xaml wpfdatagrid

我有一个非常基本的WPF应用程序,其中MS SQL服务器作为数据源附加到它.我的datagrid声明如下:

<DataGrid HorizontalAlignment="Left" Margin="10,88,0,0" VerticalAlignment="Top" Height="456" Width="1018" ItemsSource="{Binding}" />
Run Code Online (Sandbox Code Playgroud)

当我运行应用程序时,我看到数据从数据库加载到网格中,但列标题看起来很奇怪.最初包含下划线的每个标题都删除了这个下划线:some_title转到sometitle.

我发现这是因为下划线被识别为控制符号,将下一个符号转换为助记符.

如何禁用此行为?

我发现如果你将单个下划线加倍,可以绕过这种行为,即some__title代替some_title.但由于我的数据源是外部数据库,所以我不能影响它.或者可能使用转换器?

我认为最好的方法是将房产RecognizesAccessKey转为false,但遗憾的是它无法以某种方式进入.

我是WPF的新手,谢谢你的帮助!

PS她是Snoop的照片(如果有帮助的话) DataGrid已经窥探了

编辑:我的目标框架是.net 4.5

小智 5

即使这是一个老问题,我也通过了解决方案.它可能对某人有帮助.

<DataGrid HorizontalAlignment="Left" Margin="10,88,0,0" VerticalAlignment="Top" Height="456" Width="1018" ItemsSource="{Binding}" >
    <DataGrid.ColumnHeaderStyle>
        <Style TargetType="{x:Type DataGridColumnHeader}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="DataGridColumnHeader">
                        <Border>
                            <ContentPresenter 
                                HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
                                VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
                                RecognizesAccessKey="False" />
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </DataGrid.ColumnHeaderStyle>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)