WPF中RichTextBox的确非常的强大, 但让人很郁闷的是:添加到其中的控件总是被禁用的(IsEnabled始终为false)

参考以下代码:
<Window
   
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns
="http://schemas.microsoft.com/winfx/2006/xaml"
    Title
="LearnWPF - Changing Elements with Styles"
    Width
="350" Height="200"> 
   
<RichTextBox >
       
<!-- regular FlowDocument -->
       
<FlowDocument FontFamily="Segoe" FontSize="12"
>
         
<Paragraph>This is some text inside a flowdocument</Paragraph>
         
<BlockUIContainer>
           
<Button Content="Click Me?"  IsEnabled="True">
           
</Button>
         
</BlockUIContainer>
       
       
</FlowDocument>
     
</RichTextBox>
</Window>

虽然我们已经将Button的IsEnable属性设置为True,但实际运行时其仍然是被禁用的.

解决方案如下:

重写FlowDocument的IsEnabledCore属性,将其返回值设置为True
class MyFlowDocument : FlowDocument
   
{
       
protected
override
bool IsEnabledCore
       
{
           
get
           
{
               
return
true;
            }

        }

    }

然后使用重写了的MyFlowDocument替换FlowDocument就可以了