2016-10-27 81 views
1

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

我创建了一个新的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; } 
     } 
    } 
} 
+0

如果你只是拿文本框,并在设计器上右键单击并选择编辑模板 - >编辑副本,然后修改你需要在模板内部修改什么,会不会更容易? – adminSoftDK

+0

是的,但我在后面的代码中有其他功能,我想包括在自定义文本框中。为了简单起见,我没有将它包括在内。我想要一个可重用的控件,其背后的组合代码和样式更改功能。无论如何,你知道它是否可以在像我想要的DLL库中这样做? – moonlander

+0

当然可以,你所要做的就是添加新的UserControl,并将其命名为CustomTextBox(如果这是你想要的),然后用TextBox替换Tag UserControl,从这一点开始,你可以像使用TextBox一样使用这个TextBox用户控件,但是你仍然可以使用你的代码来访问你的代码。我发现这比自定义控件更容易。 – adminSoftDK

回答

2

你可以做像这样

<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> 

代码背后

public partial class CustomTextBox : TextBox 
{ 
    public CustomTextBox() 
    { 
     InitializeComponent(); 
    } 
} 

现在你可以在你的xaml(编辑模板,应用样式等)中做任何你想做的事情,并且你可以从后面的代码访问它。

+0

谢谢!这正是我想要的。 – moonlander

+0

我很高兴帮助:) – adminSoftDK

+0

好吧,不幸的是我试过了,xaml在将dll导入到另一个项目时不影响控件。 – moonlander