2011-06-16 2 views
3

У меня есть пользовательская кнопка ColorPickerButton, в WPF и стиль «ColorPickerButtonStyle» применяется для нее, которую я должен применять в xmal следующим образом:Как применять стиль программно в CustomControl

<UserControl.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="RD_ColorThemes.xaml"/> 
      <ResourceDictionary Source="RDColorPicker.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</UserControl.Resources> 

<Grid x:Name="grd"> 
<cp:ColorPickerButton x:Name="btn" Width="25" Height="25" 
Style="{DynamicResource ColorPickerButtonStyle}" 
Click="ColorPickerButton_Click" /> 

этот работа прекрасный. Но если я забуду применить стиль «{DynamicResource ColorPickerButtonStyle}», то кнопка будет выглядеть как рыба-смерть. То, что я пытаюсь сделать здесь, это то, что я хотел бы применить эту часть. < ResourceDictionary Source = "RDColorPicker.xaml"/> и Style = "{DynamicResource ColorPickerButtonStyle}", которые будут внедрены в часть реализации класса ColorPickerButton, как в Конструктор класса;

public class ColorPickerButton:Button 
{ 
    .... 
    public ColorPickerButton() 
    { 
     .... 
     //How to call resourcedictionary and apply style "ColorPickerButtonStyle" for this  button 
    } 
} 

Это будет полезно для меня. Если вы дадите мне несколько советов и подсказок.

Благодаря вам

ответ

2

Что-то вроде:

this.SetResourceReference(ColorPickerButton.StyleProperty, "ColorPickerButtonStyle"); 
+2

Спасибо @Zahid, я должен загрузить ResourceDictionary перед тем установить стиль. ResourceDictionary rd = new ResourceDictionary(); rd.Source = новый Uri («/ CustomWPFColorPicker; компонент/RDColorPicker.xaml», System.UriKind.Relative); this.Resources.MergedDictionaries.Add (rd); this.SetResourceReference (ColorPickerButton.StyleProperty, "ColorPickerButtonStyle"); // Это также workfine: //this.Style = (Style) this.FindResource ("ColorPickerButtonStyle"); –

+0

приятно знать :) –

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