这是一个非常简单的代码示例:

<DockPanel>
    <ToolBar DockPanel.Dock="Top" IsTabStop="False">
         <ToggleButton MinWidth="40"  Command="EditingCommands.ToggleBold" CommandTarget="{Binding ElementName=XAMLRichBox}" TextBlock.FontWeight="Bold" IsTabStop="False">B</ToggleButton>
    </ToolBar>
    <RichTextBox x:Name="XAMLRichBox" SpellCheck.IsEnabled="True" MinHeight="100"/>
</DockPanel>

当我运行它时,在 RichTextBox 中输入一些东西后,我可以使用 ToggleButton 来获得 BOLD 效果,一切都很好。

但是,如果我在向 ToggleButton 输入任何内容之前单击 RichTextBox(无论 RichTextBox 是否获得焦点),尽管 ToggleButton 变成了 Checked ,但我的 RichTextBox 仍然使用正常样式(不是 BOLD ),直到我再次单击 ToggleButton
这是一个错误吗?我怎样才能四处走动?谢谢!

最佳答案

主窗口.xaml

<DockPanel>
    <ToolBar
        DockPanel.Dock="Top"
        IsTabStop="False">
        <ToggleButton
            x:Name="boldButton"
            Command="EditingCommands.ToggleBold"
            CommandTarget="{Binding ElementName=XAMLRichBox}"
            TextBlock.FontWeight="Bold"
            ToolTip="Bold">
           B
        </ToggleButton>
    </ToolBar>
    <RichTextBox
        x:Name="XAMLRichBox"
        SpellCheck.IsEnabled="True"
        SelectionChanged="SynchronizeWith"
        MinHeight="100" />
</DockPanel>

主窗口.xaml.cs
 private void SynchronizeWith(object sender, RoutedEventArgs e)
    {
        object currentValue = XAMLRichBox.Selection.GetPropertyValue(TextElement.FontWeightProperty);
        boldButton.IsChecked = (currentValue == DependencyProperty.UnsetValue) ? false : currentValue != null && currentValue.Equals(FontWeights.Bold);

    }

关于c# - 当 RichTextBox 刚加载/为空时,WPF EditingCommands 不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7449205/

10-14 18:06