在 xaml 我的用户控件上设置 'style' 将 TextBox 元素替换为字符串 'system.windows.style'

Setting 'style' on my user control in xaml replaces the TextBox element with a string 'system.windows.style'

我有一个非常基本的用户控件

<UserControl x:Class="Framework_Base.UserControls.NumberPicker"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:Framework_Base.UserControls"
             mc:Ignorable="d" 
             d:DesignHeight="21" d:DesignWidth="60">
    <TextBox Name="ValueTextBox" Width="60" 
             PreviewTextInput="TextBox_PreviewTextInput"
             TextChanged="ValueTextBox_TextChanged"
             DataObject.Pasting="TextBox_Pasting" />
</UserControl>

当我将它添加到我的视图时它很好,工作正常等等

当我尝试添加这样的样式时:

<uc:NumberPicker Value="{Binding MyValue}" MinWidth="60">
    <Style TargetType="{x:Type uc:NumberPicker}">
        <Setter Property="Background" Value="Red"/>
    </Style>
</uc:NumberPicker>

用户控件如下所示:

而且我真的不知道为什么,在 Google 搜索中找不到任何内容,而且很难知道在搜索中使用什么术语。

如有任何帮助,我们将不胜感激。

XAML声明

<uc:NumberPicker ...>
    <Style TargetType="uc:NumberPicker">
        <Setter Property="Background" Value="Red"/>
    </Style>
</uc:NumberPicker>

没有设置控件的 Style 属性,而是它的 Content 属性(这是因为 ContentControl 中的 [System.Windows.Markup.ContentProperty("Content")] 声明class声明)。

要设置样式,您需要编写

<uc:NumberPicker ...>
    <uc:NumberPicker.Style>
        <Style TargetType="uc:NumberPicker">
            <Setter Property="Background" Value="Red"/>
        </Style>
    </uc:NumberPicker.Style>
</uc:NumberPicker>