wpf 重写textbox ScrollViewer x:Name="PART_ContentHost" 无法设置Foreground
时间: 2024-03-11 19:47:48 浏览: 175
C# XAML MEF笔记
如果你在 WPF 中重写 `TextBox` 控件,并且想要自定义 `ScrollViewer` 中 `PART_ContentHost` 的前景色,可以像下面这样进行实现:
```xml
<Style TargetType="{x:Type local:MyTextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:MyTextBox}">
<Border BorderThickness="{TemplateBinding BorderThickness}"
BorderBrush="{TemplateBinding BorderBrush}"
Background="{TemplateBinding Background}">
<ScrollViewer x:Name="PART_ContentHost"
Background="{TemplateBinding Background}"
Foreground="{TemplateBinding Foreground}"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
```
在这个模板中,我们使用 `TemplateBinding` 来绑定 `PART_ContentHost` 的 `Foreground` 属性到 `MyTextBox` 控件的 `Foreground` 属性上。这样一来,当你在使用 `MyTextBox` 控件时,就可以通过设置 `Foreground` 属性来改变 `PART_ContentHost` 的前景色了。
需要注意的是,如果你在 `MyTextBox` 中设置了 `Foreground` 属性,那么这个设置会自动应用到 `ScrollViewer` 和 `PART_ContentHost` 上。如果你想要在 `MyTextBox` 中自定义 `PART_ContentHost` 的前景色,可以通过上述方式来实现。
阅读全文