C# 扩展文本框控件并更改部分默认样式
我想创建一个具有扩展功能的WPF文本框类库(dll文件)。但我想更改TextBox默认样式的一部分(IsMouseOver属性触发器) 我创建了一个新的WPF用户控件库项目,从中删除了生成的.XAML和.cs文件,并添加了一个新的类文件。然后我从TextBox类派生,但我不知道如何访问样式XAML 我不知道该怎么做 在我的项目中,我目前只有这个.cs文件,没有.XAML文件: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 :
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();
}
}