gpt4 book ai didi

wpf - 在 XAML 中包装另一个控件的控件模板

转载 作者:行者123 更新时间:2023-12-04 06:01:35 24 4
gpt4 key购买 nike

我想创建一个自定义控件来扩展内置控件,然后有一个用容器包装该控件的模板?

C#类:

class ExtraBorderTextBox : TextBox {}

Xaml:

<ControlTemplate>
<Border>
<TextBox/>
</Border>
</ControlTemplate>

这不起作用,因为控件模板中的 TextBox 不是我的自定义控件,它是第二个实例。

我需要访问 TextBox 上的属性和事件,拥有不同的父级没有意义,我必须在我的类中复制所有这些。

这是一个简化的例子;想象 Border 被一个 ContentControl 替换,它本身有一个 50 行的控件模板。我想我想要类似 ContentPresenter 的东西(就像我在 ContentControl 中拥有的那样),但是没有像“ControlPresenter”这样的东西。正确的?我是否遗漏了什么,或者我是否坚持为 TextBox 复制我的内容控件,或者为我的内容控件复制 TextBox 行为和表示?

谢谢。

更新:这里有一个答案可以满足我的要求,即复制 System.Windows.Controls.TextBox 的默认模板。这会做我想做的;我可以将我的容器插入其中。我希望 WPF 提供一种更易于维护的方法来执行类似的操作,例如装饰器/装饰器模式。

有什么办法可以在某种程度上使它变得更好吗?使用 Expression Blend 之类的东西可以做到这一点,这样我就不必手动编辑从网页粘贴的 XAML 了吗?

最佳答案

您可以使用默认控件模板作为基础并对其进行修改。默认控件模板可在此处找到:http://msdn.microsoft.com/en-us/library/aa970773.aspx

关于wpf - 在 XAML 中包装另一个控件的控件模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8858488/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com