1. 程式人生 > >RichTextBox 新增控制元件,被禁用如何處理 button

RichTextBox 新增控制元件,被禁用如何處理 button

 WPF中RichTextBox的確非常的強大, 但讓人很鬱悶的是:新增到其中的控制元件總是被禁用的(IsEnabled始終為false)

  參考以下程式碼:

<Window
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="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 flow

document</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就可以了:)