사용자가 색상 선택기 대화 상자에서 색상을 선택하고 실시간으로 응용 프로그램의 스타일을 변경할 수있게하여 응용 프로그램을보다 사용자 정의 가능하게하려고합니다. (DynamicResource
)WPF : 런타임 중에 App.xaml에서 리소스 (색상) 변경
app.xaml
에있는 특정 리소스를 변경하려면 어떻게해야합니까?
var colorDialog = new CustomControls.ColorPickerDialog();
var dResult = colorDialog.ShowDialog();
var x = Application.Current.Resources.Values.OfType<LinearGradientBrush>().First();
x = new LinearGradientBrush();
x.GradientStops.Add(new GradientStop(colorDialog.SelectedColor,1));
이쪽 app.xaml
파일의 발췌 :
<Application.Resources>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0" x:Key="HeaderBackground">
<GradientStop Color="#82cb02" Offset="1"/>
<GradientStop Color="#82cb01" Offset="0.2"/>
<GradientStop Color="#629a01" Offset="0.5"/>
</LinearGradientBrush>
최고의 무엇입니까
것은 나는이 있지만 운 (단지 테스트) 같은 것을 시도 이 양식의 사용자 정의 기능 (기본적으로 일부 색상 만 변경)을 응용 프로그램에 허용하는 방법은 무엇입니까?
난 그냥 질문 한 이전 질문에서 this answer을 발견하고,하지만 난 Petoj 주어진에 대한 코멘트에서 언급 한 같은 InvalidOperationException이 예외를 얻고 그것을 시도
[업데이트] 대답. 여기에 대한 대답에서 샘플 코드는 다음과 같습니다
XAML :
<LinearGradientBrush x:Key="MainBrush" StartPoint="0, 0.5" EndPoint="1, 0.5" >
<GradientBrush.GradientStops>
<GradientStop Color="Blue" Offset="0" />
<GradientStop Color="Black" Offset="1" />
</GradientBrush.GradientStops>
</LinearGradientBrush>
C 번호 :
LinearGradientBrush myBrush = FindResource("MainBrush") as LinearGradientBrush;
myBrush.GradientStops[0].Color = Colors.Red;
하지만이 스타일은 내 프로젝트의 모든 창에 적용되기 때문에 창에 추가 할 수 없습니다. –