这是一个非常简单的代码示例:
<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/