首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF编辑资源

WPF编辑资源
EN

Stack Overflow用户
提问于 2009-02-09 19:50:55
回答 2查看 1.5K关注 0票数 2

嗨,有没有什么方法可以通过代码或者绑定来改变资源画刷?我想要做的是当一个按钮被点击时改变我的“主”画笔的颜色。

非常感谢!

编辑:

这是一个GradientBrush,我如何改变它的颜色?

代码语言:javascript
复制
myBrush.GradientStops[0].Color = Colors.Red;

只是给了我一个例外。有没有像故事板那样的颜色变化的动画效果?

EN

回答 2

Stack Overflow用户

发布于 2009-02-09 20:38:39

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

(我将抛出一个例子)

编辑:看起来像是另一个Silverlight !=我的WPF失败了。我似乎不能让它在WPF中运行。

票数 2
EN

Stack Overflow用户

发布于 2009-02-09 20:17:14

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

在我(没有经验)的观点中,资源不应该在运行时改变。如果它要改变,就绑定它。

(edit2:从Silverlight风格的顶层UserControl更改为WPF窗口。正如雷·布伊森在评论中指出的那样,WPF中的UserControl将通过DependencyProperty暴露颜色,而不是将其绑定到ViewModel。)

XAML:

代码语言:javascript
复制
<Grid x:Name="LayoutRoot">
    <Grid.Background>
        <SolidColorBrush Color="{Binding BackgroundColor}" />
    </Grid.Background>
    ...

Viewmodel类:

代码语言:javascript
复制
public class MyViewModel : INotifyPropertyChanged
{
    public Color BackgroundColor
    {
        get { ... }
        set { ... } // fire PropertyChanged event
    }
    ...

XAML.cs:

代码语言:javascript
复制
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;
     }
     ...
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/529621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档