转发控件的所有属性
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了转发控件的所有属性相关的知识,希望对你有一定的参考价值。
我正在制作一个自定义控件(这就是我做的,我是一个主题设计师)而且我遇到了麻烦。我正在进行的控件是一个自定义的RichTextBox控件。由于我想在RichTextBox周围使用自定义边框(圆角边),我只需要一个带有自定义边框的控件,以及一个实际上是普通RichTextBox的子控件。将BorderStyle设置为none,它看起来像这样:
当然,现在,parentcontrol需要拥有普通RichTextbox所具有的所有属性。我手动完成常规文本框的所有属性,但RichTextBox有更多的属性,我问自己,有没有办法将子控件的所有属性“转发”到主控件?
也许我有点奇怪地解释它。基本上,当您更改主控件的“Text”属性时,RichTextBox的Text属性也应该更改。这意味着我必须为RichTextBox拥有的每个Property编写一个自定义事件,是不是有办法自动为每个属性执行此操作?
提前致谢,
Mava卡。
原来没有办法做到这一点。
注意:我在发布之前在他们的问题中有WinForms标记之前回答了这个问题。 (我实际上是基于他在这里的回复添加的。)不过,如果你正在使用WPF,那么你就是这样做的......
最简单的方法是将ControlTemplate替换为您的内部实现。换句话说,您正在替换RichTextBox控件的“可视”部分,但您仍然是RichTextBox控件。
例如,这就是我取代TextBox的视觉效果以完全剥离掉所有chrome的方法,只留下一个简单的边框。但它仍然是一个包含所有属性等的完整TextBox。
再次,查找控制模板。您可能还想搜索“Lookless Controls”。
<Style TargetType="{x:Type glc:EditableTextBlock2}" BasedOn="{StaticResource {x:Type TextBox}}">
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="MinWidth" Value="20" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type glc:EditableTextBlock2}">
<Border Name="Bd"
SnapsToDevicePixels="True"
BorderThickness="1"
BorderBrush="{TemplateBinding Border.BorderBrush}"
Background="{TemplateBinding Border.Background}" >
<ScrollViewer Name="PART_ContentHost"
SnapsToDevicePixels="True"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
以上是关于转发控件的所有属性的主要内容,如果未能解决你的问题,请参考以下文章