2014-05-15 3 views
0

최대 (double)라는 종속성 속성이있는 사용자 지정 컨트롤이 있고이 사용자 지정 컨트롤에 대한 고유 한 스타일을 정의했습니다. 커스텀 컨트롤 스타일에서는 최대 (50)로 설정됩니다. 응용 프로그램에서 최대 (double?) 속성보기 모델이 있습니다. 보기 모델의 최대 값이 null 일 경우WPF - 뷰 모델의 속성이 null 인 경우 스타일의 기본값 사용

<Style x:Key="MyCustomControlDefaultStyle" TargetType="controls:MyControl"> 
    <Setter Property="Maximum" Value="50" /> 

</Style> 
<controls:MyControl Maximum="{Binding Maximum}" 
           Style="{StaticResource MyCustomControlDefaultStyle}" 
             /> 

나는 자동으로 WPF MyCustomControlDefaultStyle에 정의 된 기본값을 사용하고 싶습니다. 가능한가? 조언

에 대한 감사

답변

2

지금 확인할 수 없습니다,하지만 당신은 정적 속성 안에 당신의 DefaultValue를 넣어 다음과 같은 바인딩 콘크리트 내부의 스타일에서와 Fallbackvalue/TargetNullValue에서이 값을 참조 할 수 있습니다 :

<Setter Property="Maximum" Value="{x:Static ns:MyStaticClass.MyStaticProp}" /> 

그리고 바인딩과 같은 내부 :

<controls:MyControl Maximum="{Binding Maximum, FallBackValue={x:Static ns:MyStaticClass.MyStaticProp}" 
           Style="{StaticResource MyCustomControlDefaultStyle}" /> 

그 FallBackValue을 위해 작동하는지 확실하지. 나는 조금 나중에 확인합니다 ... :)

+0

옙 ... 대체와 함께 작동하는 것으로 보입니다. – Gope

+0

그것은 내 생각이기도하지만 뷰 모델의 값이 null이고 스타일의 값을 사용하면 바인딩을 적용하지 않는 것이 좋을 것이다. :) – user2250152

0

당신은 Converter과 함께 당신의 스타일에 DataTrigger를 사용할 수 있습니다

<Style.Triggers> 
    <DataTrigger Binding="{Binding Maximum, Converter={StaticResource NullToBooleanConverter}}" Value="False"> 
     <Setter Property="Text" Value="{Binding Maximum}" /> 
    </DataTrigger> 
</Style.Triggers> 

컨버터는 다음과 같이 보일 수 있습니다 :

class NullToBooleanConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return value == null; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

편집 : 작동하도록 구문 강조를 관리 할 수 ​​없습니다 ...

관련 문제