こんにちは、リソース ブラシをコードから、またはバインディングを介して変更する方法はありますか? 私がしたいのは、ボタンがクリックされたときに「メイン」ブラシの色を変更することです。
どうもありがとう!
編集:
そのGradientBrushの色を変更するにはどうすればよいですか?
myBrush.GradientStops[0].Color = Colors.Red;
例外があります...ストーリーボードのように、色の変化をアニメーション化する方法はありますか?
変更をアニメーション化するには、Storyboard を作成し、その上で Begin を呼び出してみてください。
(例をまとめていきます)
編集: 別の Silverlight のようです != 私の側で WPF が失敗します。WPFでうまくいかないようです。
Model-View-ViewModel (MVVM) パターンなどを使用している場合は、ブラシの色 (またはブラシ全体) をビューモデルのプロパティにして、それに直接バインドできます。
私の(経験の浅い)意見では、リソースは実行時に変更されるべきではありません。変更する場合は、バインドします。
(edit2: Silverlight スタイルの最上位 UserControl から WPF Window に変更されました。Ray Booysen がコメントで指摘したように、WPF の UserControl は、ViewModel にバインドされるのではなく、DependencyProperty を介して色を公開します。)
XAML:
<Grid x:Name="LayoutRoot">
<Grid.Background>
<SolidColorBrush Color="{Binding BackgroundColor}" />
</Grid.Background>
...
ビューモデル クラス:
public class MyViewModel : INotifyPropertyChanged
{
public Color BackgroundColor
{
get { ... }
set { ... } // fire PropertyChanged event
}
...
XAML.cs:
public partial class MyWindow : Window
{
private MyViewModel m_viewmodel;
public MyWindow()
{
InitializeComponent();
viewmodel = new MyViewModel();
this.LayoutRoot.DataContext = viewmodel;
}
private void ButtonClick(object sender, RoutedEventArgs e)
{
this.viewmodel.BackgroundColor = Color.Red;
}
...