XAML 继承WinUI-UserControl的子代不会继承所有样式

nukf8bse  于 2023-08-01  发布在  其他
关注(0)|答案(1)|浏览(120)

当继承一个TextBox时,并不是所有的样式都被子对象所接受(见附录中的图片)。

<TextBox
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"/>

个字符
我尝试了不同的方法:

  • 如上所述的继承会导致某些样式丢失;
  • generic.xaml复制硬编码的TextBox样式,并将其目标设置为继承的控件结果,以达到相同的效果;
  • 使用模板化的控件,如提到的here似乎也不起作用。当我通过为UWP预设的模板化控件创建它并将命名空间从Windows更改为Microsoft时,该控件为空(生成的generic.xaml似乎根本不受重视。完全删除它没有区别);
  • 使用BasedOn属性定义样式与第一种方法具有相同的reuslt。

注意事项:
x1c 0d1x的数据

  • TextBox聚焦时,蓝色底边框厚度不会增加(此处不可见);
  • corder半径为0。

这应该是一个不用动脑筋的问题,但我现在真的很挣扎。

nzkunb0c

nzkunb0c1#

创建一个独立的自定义类:

public class MyCustomTextBox : TextBox
{
    public MyCustomTextBox()
    {
        DefaultStyleKey = typeof(MyCustomTextBox);
    }
}

字符串
并将以下默认模板添加到themes/generic.xaml

<Style TargetType="local:MyCustomTextBox" BasedOn="{StaticResource DefaultTextBoxStyle}" />


然后它看起来应该像默认的TextBox

相关问题