런타임시 기본 스타일 속성을 사용하려고합니다. 예 : 나는 사용자가 폰트 크기와 폰트 패밀리 등을 바꿀 수있는 설정 페이지를 가지고있다. 이것들은 모두 공통 속성이다. 그래서 저는이 모든 기본 속성들을 정의한 구조를 가지고 있습니다. 이제 글꼴 크기를 11px에서 14px로 변경하면 응용 프로그램의 모든 요소가이 변경 사항을 상속해야합니다.기본 스타일을 동적으로 변경하십시오.
문제는 모든 속성을 저장하는 기본 스타일을 수정할 수 없다는 것입니다. 코드 아래
내 기본 스타일을 보여줍니다 지금
<Style x:Key="BaseStyle">
<Setter Property="Control.FontFamily" Value="Arial"></Setter>
<Setter Property="Control.FontSize" Value="11px"/>
<Setter Property="Control.Foreground" Value="Red"/>
</Style>
I가이 기본 스타일에서 상속 다른 스타일 :
<Style TargetType="TextBox" BasedOn="{StaticResource BaseStyle}">
<Setter Property="Control.Background" Value="{DynamicResource NormalBrush}"/>
</Style>
내가 글꼴 크기 변화에 대한 콤보 박스가 응용 프로그램에서 :
<ComboBox Height="23" HorizontalAlignment="Left" Name="comboBox2" SelectedValue="FontSizeValue" Style="{x:Null}" Width="92">
<ComboBoxItem Content="12px"/>
<ComboBoxItem Content="13px"/>
<ComboBoxItem Content="14px"/>
<ComboBoxItem Content="15px"/>
</ComboBox>
이제 응용 프로그램에서이 콤보 상자의 값을 선택하면 기본 스타일을 업데이트하십시오. 나는 할 수 없다. 내가 어떻게 이것을 달성 할 수 있는지에 대한 제안. 모든 속성 변경은 동적으로 발생해야합니다.
MSDN 말한다 : 스타일이 적용되면, 그것은 밀봉 아래
이 완벽한 예입니다 변경할 수 없습니다. 이미 적용된 스타일을 동적으로 변경하려면 기존 스타일을 대체 할 새 스타일을 만들어야합니다. – Nitesh예. 지금 당면하고있는 문제입니다. 우리가 똑같은 일을 할 수 없게 만들까요? 나는 글꼴 크기의 속성 만 변경하고 다른 10 개의 속성은 그대로 유지해야합니다. 그러면 새 스타일을 만들고 현재 스타일을 덮어 쓰면 모든 기본값이 손실됩니다. 다른 문제는 없습니까? – ds345