您有什么方法可以从代码或通过一些绑定更改资源画笔? 我想要做的是在点击按钮时更改“主”画笔的颜色。
非常感谢!
编辑:
它的GradientBrush如何更改颜色?
myBrush.GradientStops[0].Color = Colors.Red;
只是给了我一个例外......有没有办法动画颜色变化,就像故事板一样?
答案 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;
}
...