2016-10-27 116 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