Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 扩展文本框控件并更改部分默认样式_C#_Wpf_Custom Controls_Extending Classes - Fatal编程技术网

C# 扩展文本框控件并更改部分默认样式

C# 扩展文本框控件并更改部分默认样式,c#,wpf,custom-controls,extending-classes,C#,Wpf,Custom Controls,Extending Classes,我想创建一个具有扩展功能的WPF文本框类库(dll文件)。但我想更改TextBox默认样式的一部分(IsMouseOver属性触发器) 我创建了一个新的WPF用户控件库项目,从中删除了生成的.XAML和.cs文件,并添加了一个新的类文件。然后我从TextBox类派生,但我不知道如何访问样式XAML 我不知道该怎么做 在我的项目中,我目前只有这个.cs文件,没有.XAML文件: namespace CustomControls { public class CustomTextBox :

我想创建一个具有扩展功能的WPF文本框类库(dll文件)。但我想更改TextBox默认样式的一部分(IsMouseOver属性触发器)

我创建了一个新的WPF用户控件库项目,从中删除了生成的.XAML和.cs文件,并添加了一个新的类文件。然后我从TextBox类派生,但我不知道如何访问样式XAML

我不知道该怎么做

在我的项目中,我目前只有这个.cs文件,没有.XAML文件:

namespace CustomControls
{
    public class CustomTextBox : TextBox
    {
        private string customProperty;
        public string CustomProperty
        {
            get { return customProperty; }
            set { customProperty = value; }
        }
    }
}

你可以这样做

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

</TextBox>

现在,您可以在xaml中执行任何您想执行的操作(编辑模板、应用样式等),并且您可以从代码隐藏中访问它。

如果您只需使用文本框,在设计器上右键单击并选择“编辑模板”->“编辑副本”,然后在模板内修改您需要修改的内容,这不是更容易吗?

,但是,我想在自定义文本框中包含代码隐藏中的其他功能。为了简单起见,我没有把它包括在这里。我想要一个具有组合代码隐藏和样式更改功能的可重用控件。不管怎样,你知道它是否可以像我所希望的那样在dll库中完成吗?当然可以,你所要做的就是,添加新的UserControl,并将其命名为CustomTextBox(如果这是你想要的),然后用TextBox替换标记UserControl,从这一点上你可以像用户控件一样使用这个TextBox,但您仍然可以访问您的代码。我发现这比自定义控件容易得多。谢谢!这正是我想要的。我很高兴能帮上忙:)很遗憾,我尝试了这个方法,但当将dll导入到另一个项目时,xaml并没有影响控件。@moonlander你能编辑你的问题以显示你做了什么吗?),我们一直使用这种方法,而且效果很好。没关系,我忘记添加InitializeComponent();
public partial class CustomTextBox : TextBox
{
    public CustomTextBox()
    {
        InitializeComponent();
    }
}