EditingCommands WPF RichTextBox теряют свою привязку, когда они не помещаются в панель инструментов - PullRequest
0 голосов
/ 21 августа 2010

Используя приведенный ниже код в DataGridTemplateColumn DataGrid , мои кнопки форматирования отключены (выделены серым цветом).Кнопки форматирования доступны только , когда они вставлены в панель инструментов .

Когда кнопки вставлены в Панель инструментов Мне не нужно CommandTarget .Поэтому, когда я помещаю их за пределы панели инструментов, некоторые могут подумать, что она должна работать с 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>

1 Ответ

0 голосов
/ 21 августа 2010

Панель инструментов имеет FocusManager.IsFocusScope = "True", что по умолчанию равно false.

Просто поместите FocusManager.IsFocusScope = "True" внутри панели, содержащей кнопки.

CommandTarget - этоограничьте кнопки, если они находятся на панели IsFocusScope = "True" - например, если у вас есть два RichTextBox, и вы хотите, чтобы кнопки работали только на одном из них.

...