2010-12-06 5 views
1

이 같은 공용 속성 노출 UserControl이있다 : I 제어, 내가 그 속성을 설정 할 수 있도록하려는 것을 사용할 때UserControl을 속성

public Double ButtonImageHeight 
{ 
    get { return imgButtonImage.Height; } 
    set { imgButtonImage.Height = value; } 
} 

을 축복하는 그런 스타일 :

<Style x:Key="MyButtonStyle" TargetType="my:CustomButtonUserControl" > 
    <Setter Property="ButtonImageHeight" Value="100" /> 
</Style> 

내가 뭘 잘못하고 있니?

감사합니다.

+1

실제로 UserControl을 다른 위치에 배치하고 스타일을 할당하는 위치를 xaml로 표시합니다. – AnthonyWJones

답변

1

스타일을 지원하려면 속성이 종속 속성이어야합니다.

3

감사합니다. 매트, 방금 직접 찾았지만 절대적으로 옳았습니다. 다른 사람을 도울 수있는 경우에 사용한 정확한 코드는 다음과 같습니다 (모든 예제는 WPF에 있었지만 실버 라이트는 약간 다릅니다).

public static readonly DependencyProperty ButtonImageHeightProperty = DependencyProperty.Register("ButtonImageHeight", typeof(Double), typeof(CustomButtonUserControl),new PropertyMetadata(ButtonImageHeight_PropertyChanged)); 

public Double ButtonImageHeight 
{ 
    get { return (Double)GetValue(ButtonImageHeightProperty); } 
    set { SetValue(ButtonImageHeightProperty, value); } 
} 

private static void ButtonImageHeight_PropertyChanged(DependencyObject source, DependencyPropertyChangedEventArgs e) 
{ 
    ((CustomButtonUserControl)source).imgButtonImage.Height = (Double)e.NewValue; 
} 
0

imgButtonImage의 스타일을 지나치게하면 더 다양한 일반 속성을 설정할 수 있습니다. 그래서 사용자 정의 컨트롤 내에서 종속성 속성을 추가 할 수 있지만 그것을 스타일 확인하십시오하여 PropertyChanged 함수 내에서 나는 새로운 스타일로 컨트롤의 스타일을 설정하는 방법

public static readonly DependencyProperty UseStyleProperty = 
     DependencyProperty.Register("UseStyle", typeof(Style), typeof(CustomButtonUserControl), new PropertyMetadata(UseStyle_PropertyChanged)); 

    public Style UseStyle 
    { 
     get { return (Style)GetValue(UseStyleProperty); } 
     set { SetValue(UseStyleProperty, value); } 
    } 

    private static void UseStyle_PropertyChanged(DependencyObject source, DependencyPropertyChangedEventArgs e) 
    { 
     ((CustomButtonUserControl)source).imgButtonImage.Style = (Style)e.NewValue; 
    } 

공지 사항.

그리고 나는 내가 스타일을 통과 할 수있는 UserControl 호스팅 할 때 : VS 디자인 모드에서

<Style x:Name="MyFancyStyle" TargetType="Button" > 
    <Setter Property="FontSize" Value="24" /> 
</Style> 

<controls:MyUserControl UseStyle="{StaticResource MyFancyStyle}" /> 

작품을 너무! (기적)