嗨,有没有什么方法可以通过代码或者绑定来改变资源画刷?我想要做的是当一个按钮被点击时改变我的“主”画笔的颜色。
非常感谢!
编辑:
这是一个GradientBrush,我如何改变它的颜色?
myBrush.GradientStops[0].Color = Colors.Red;只是给了我一个例外。有没有像故事板那样的颜色变化的动画效果?
发布于 2009-02-09 20:38:39
要为更改设置动画,请尝试创建一个故事板并在其上调用Begin。
(我将抛出一个例子)
编辑:看起来像是另一个Silverlight !=我的WPF失败了。我似乎不能让它在WPF中运行。
发布于 2009-02-09 20:17:14
如果您使用的是Model-View-ViewModel (MVVM)模式或类似的模式,则可以将画笔颜色(或整个画笔)设置为视图模型的属性并直接绑定到它。
在我(没有经验)的观点中,资源不应该在运行时改变。如果它要改变,就绑定它。
(edit2:从Silverlight风格的顶层UserControl更改为WPF窗口。正如雷·布伊森在评论中指出的那样,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;
}
...https://stackoverflow.com/questions/529621
复制相似问题