2012-04-30 4 views
4

Мы пишем пользовательский подкласс TextBox, где нам нужно изменить только некоторые основные части стиля. Теперь мы знаем, когда вы подкласс Control, как правило, вы должны изменить метаданные, как это ...Как я могу создать стиль в стиле элемента управления по умолчанию?

public class EnhancedTextBox : TextBox 
{ 
    static EnhancedTextBox() 
    { 
     // Commenting this line out lets this use the default TextBox style. 
     DefaultStyleKeyProperty.OverrideMetadata(
      typeof(EnhancedTextBox), 
      new FrameworkPropertyMetadata(typeof(EnhancedTextBox))); 
    } 
} 

Это меняет ключ, используемый для этого типа подкласса быть сам тип, который не означает, что он больше не получает стиль TextBox по умолчанию. Нет biggie ... мы просто комментируем эту строку, и она снова работает, так как ключ по-прежнему установлен на значение, используемое TextBox напрямую.

Однако мы интересно, если мы же хотят изменить некоторые вещи в стиле, но не весь стиль, мы могли бы просто создать новый стиль и установить его свойство BasedOn ... но то, что мы установить там? Мы не хотим, чтобы вручную вытащить XAML и создать новый стиль, дать ему ключ, а затем использовать StaticResource, но мы не обнаружили, что мы могли бы установить там, чтобы сказать: «Это основано на TextBox стиль.

Я надеюсь, что это что-то простое, но опять же, мы его не нашли. Может ли кто-нибудь помочь?

ответ

5

И точно так же ... Я нашел его. Человек, пиная себя, что это было очевидно, и я пропустил это!

<Style TargetType="{x:Type local:EnhancedTextBox}" 
    BasedOn="{StaticResource {x:Type TextBox}}"> 

    .... 

</Style> 

Нашел здесь ... WPF style basedon current

 Смежные вопросы

  • Нет связанных вопросов^_^