뷰 모델 부울 속성의 값에 따라 배경색을 변경하는 약 50 개의 레이블을 표시해야하는 요구 사항이 있습니다. . 각 레이블은 다른 뷰 모델 부울 특성과 연관됩니다. 이렇게하면 모든 레이블에 대해 스타일을 선언 할 필요가 없도록 모든 50 개의 레이블과 연결할 수있는 단일 스타일을 어떻게 만들 수 있습니까? 각각의 레이블이 다른 뷰 모델 부울 속성에 바인딩되기 때문에 모든 50 개의 레이블에 단일 스타일 및/또는 데이터 트리거를 적용 할 수있는 방법이 있습니까?보기 모델에 따라 배경색을 변경하는 50 개의 WPF 레이블에 대해 단일 스타일 또는 데이터 트리거를 만들 수 있습니까? 부울 값
답변
글로벌 스타일의 작동 방식을 잘 알고 있습니다. 내 특별한 질문 : 각 레이블은 다른 뷰 모델 부울 속성에 바인딩되므로 모든 50 개의 레이블에 단일 스타일 또는 데이터 트리거를 적용 할 수있는 방법이 있습니까?
아니요 프로그래밍 방식으로 만들지 않는 한 DataTrigger
의 바인딩을 동적으로 변경할 수 없습니다.
DataTrigger
의 바인딩 경로를 동적으로 바꾸고 나머지 스타일 또는 서식 파일을 XAML에서 재사용 할 방법이 없습니다.
고마워요. 저는 50 가지 라벨에 다른 데이터 트리거를 적용하기 전에이 작업을 수행 할 수있는 방법이 없었는지 확인하고 싶었습니다. – chuckp
레이블에 대한 사용자 지정 템플릿을 만들고 ControlTemplate 트리거를 추가하여 레이블 배경을 변경하려고 할 수 있다고 생각합니다. 코드 위
<Style x:Key="test" TargetType="Label">
<Setter Property="BorderThickness" Value="1"></Setter>
<Setter Property="BorderBrush" Value="Black"></Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<TextBlock Text="test"></TextBlock>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding ColorValue}" Value="12">
<Setter Property="Background" Value="Aquamarine"></Setter>
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
은 정확한 답변을하지, 그냥 사용을 보여주는 것입니다.
나는 모든 50 개의 레이블이 동일한 뷰 모델 부울 속성에 바인딩 된 경우이 방법이 효과가 있다고 생각합니다. 그러나 ... 각 레이블은 자체 부울 속성에 바인딩됩니다. – chuckp
완전히 귀하의 요점에 동의하지만, 나는 각 viewmodel이 작동해야합니다 동일한 속성 이름을 가지고 있다고 생각하지만. 내가 그것을 시도하자. 우리가 속성을 가진 기본 viewmodel을 가질 수 있고 각 viewmodel이 해당 레이블에 대해 해당 속성을 사용하는지 확인하십시오. 너가 다르게 생각하면 나에게 알려줘. –
가능한 복제 http://stackoverflow.com/questions/3569974/wpf-global-style –
가능한 복제본 [WPF - 글로벌 스타일?] (http://stackoverflow.com/questions/3569974/wpf-global- 스타일) –
저는 글로벌 스타일이 어떻게 작동하는지 잘 알고 있습니다. 내 특별한 질문 : 각 레이블은 다른 뷰 모델 부울 속성에 바인딩되므로 모든 50 개의 레이블에 단일 스타일 또는 데이터 트리거를 적용 할 수있는 방법이 있습니까? – chuckp