2010-02-12 36 views
1

我有一個Silverlight 4瀏覽器外的應用程序與ScrollViewer裏面有幾個RichTextBoxes。 RichTextBoxes僅用於顯示文本,並且從不編輯和永不滾動。Silverlight 4 - Mousewheel停止滾動ScrollViewer當包含RichTextBox

但是,當鼠標懸停在RichTextBox上時,mousewheel事件似乎無法到達ScrollViewer。有什麼辦法克服這個限制嗎?

回答

3

只讀RichTextBox不滾動的原因是因爲RichTextBox的默認模板使用ScrollViewer而不是ContentControl。所以爲了解決這個問題,你需要爲RichTextBox創建自己的模板。

我所做的是在Blend中創建一個RichTextBox模板的副本,並將其剝離爲只讀情況。這消除了約90%的模板。下面的樣式/模板保持:

<Style TargetType="c:RichTextBlock"> 
    <Setter Property="IsReadOnly" Value="True" /> 
    <Setter Property="Background" Value="Transparent"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate> 
       <Grid x:Name="RootElement"> 
        <Border x:Name="Border" CornerRadius="0" 
          BorderBrush="{TemplateBinding BorderBrush}" 
          BorderThickness="{TemplateBinding BorderThickness}" 
          Background="{TemplateBinding Background}" 
          Padding="{TemplateBinding Padding}" 
         > 
         <ContentControl x:Name="ContentElement" IsTabStop="False" /> 
        </Border> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

使用這種風格/模板您只讀RichTextBox'es,你應該是好去。

Goood運氣,
吉姆·麥柯迪
面對面軟件和YinYangMoney