WPF编辑资源

时间:2009-02-09 19:50:55

标签: wpf animation binding resources brush

您有什么方法可以从代码或通过一些绑定更改资源画笔? 我想要做的是在点击按钮时更改“主”画笔的颜色。

非常感谢!

编辑:

它的GradientBrush如何更改颜色?

myBrush.GradientStops[0].Color = Colors.Red;

只是给了我一个例外......有没有办法动画颜色变化,就像故事板一样?

2 个答案:

答案 0 :(得分:2)

要为更改设置动画,请尝试创建故事板并在其上调用Begin。

(我会一起举一个例子)

编辑:看起来它是另一个Silverlight!= WPF失败了。我似乎无法让它进入WPF。

答案 1 :(得分:-1)

如果您正在使用Model-View-ViewModel(MVVM)模式或类似的模式,您可以使画笔颜色(或整个画笔)成为视图模型的属性并直接绑定到它。

在我的(没有经验的)意见中,资源不应该在运行时改变。如果它会改变,请绑定它。

(edit2:从Silverlight风格的顶级UserControl更改为WPF Window。正如Ray Booysen在评论中指出的那样,WPF中的UserControl将通过DependencyProperty公开颜色,而不是将其绑定到ViewModel。)

XAML:

<Grid x:Name="LayoutRoot">
    <Grid.Background>
        <SolidColorBrush Color="{Binding BackgroundColor}" />
    </Grid.Background>
    ...

Viewmodel类:

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;
     }
     ...