0

在DataGridDataGridTemplateColumn中使用以下代码,我的格式化按钮被禁用(灰显)。格式化按钮仅在放入 ToolBar启用

当按钮放在ToolBar中时,我不需要CommandTarget。因此,当我将它们放在 ToolBar 之外时,有些人可能会认为它必须与 CommandTarget 一起使用,但事实并非如此,为什么?

<Button Content="K" CommandTarget="{Binding ElementName=RTFBox}" Command="EditingCommands.ToggleItalic"/>
<Button Content="U" CommandTarget="{Binding ElementName=RTFBox}" Command="EditingCommands.ToggleUnderline" />


  <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <Helper:RichTextBox VerticalScrollBarVisibility="Auto"  x:Name="RTFBox" LostFocus="RTFBox_LostFocus" Text="{Binding Notes, UpdateSourceTrigger=PropertyChanged}" >
                                        <Helper:RichTextBox.TextFormatter>
                                            <Helper:RtfFormatter />
                                        </Helper:RichTextBox.TextFormatter>
                                        <RichTextBox.CommandBindings>
                                            <CommandBinding Command="EditingCommands.ToggleUnderline"/>
                                            <CommandBinding Command="EditingCommands.ToggleItalic"/>
                                        </RichTextBox.CommandBindings>
                                    </Helper:RichTextBox>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
4

1 回答 1

0

ToolBar 具有 FocusManager.IsFocusScope="True" 默认为 false。

只需将 FocusManager.IsFocusScope="True" 放在包含按钮的面板中。

如果按钮位于 IsFocusScope="True" 面板中,CommandTarget 将限制它们 - 例如,如果您有两个 RichTextBox 并且您只希望按钮在其中一个上工作。

于 2010-08-20T21:23:59.443 回答