我有代码:
<ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background). (GradientBrush.GradientStops)[1].(GradientStop.Color)" Storyboard.TargetName="grid">
<EasingColorKeyFrame KeyTime="0:0:0.5" Value="{Binding CorBackground}"/>
</ColorAnimationUsingKeyFrames>
颜色值定义为Value="#FFFFFF"
,我想要使用绑定来定义此颜色。 Value="{Binding CorBackground}
。它有可能吗?
我在MainWindow.xaml.cs
创建了一个属性,但没有工作:
private string _corBackground = string.Empty;
public string CorBackground
{
get { return _corBackground; }
set { _corBackground = value; }
}
答案 0 :(得分:2)
如果您不想使用具有正确绑定的MVVM模式,可能的解决方案是在UserControl中使用DependecyProperty(如示例中名为“BackgroundColor”的SolidColorBrush属性)。你的MainWindow.cs看起来像
public partial class MainWindow : Window
{
public static readonly DependencyProperty BackgroundColorProperty = DependencyProperty.Register(
"BackgroundColor", typeof (SolidColorBrush), typeof (MainWindow), new PropertyMetadata(default(SolidColorBrush)));
public SolidColorBrush BackgroundColor
{
get { return (SolidColorBrush) GetValue(BackgroundColorProperty); }
set { SetValue(BackgroundColorProperty, value); }
}
public MainWindow()
{
BackgroundColor = new SolidColorBrush(Colors.LightBlue);
InitializeComponent();
}
private void ChangeBackgroundButton_OnClick(object sender, RoutedEventArgs e)
{
BackgroundColor = new SolidColorBrush(Colors.CornflowerBlue);
}
}
您的网格背景属性绑定到“BackgroundColor”。
<Window x:Class="ListBoxStackoverflow.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
x:Name="WindowsWithDependencyProperty">
<Grid Background="{Binding ElementName=WindowsWithDependencyProperty, Path=BackgroundColor}">
<Button x:Name="ChangeBackgroundButton"
HorizontalAlignment="Left" VerticalAlignment="Top"
Click="ChangeBackgroundButton_OnClick">Change Background</Button>
</Grid>
请注意,这只是一种可能的解决方案。
答案 1 :(得分:1)
我不确定这个属性是否可绑定,但通常应该是。如果是这样,您必须将控件的DataContext
设置为包含您的属性的类的实例。
如果它在同一个控件/窗口/类中,那么构造函数中的简单this.DataContext = this
或控件/窗口的Loaded
事件中的任何内容都将为您完成任务。
答案 2 :(得分:1)
该类需要实现INotifyPropertyChanged,并且该属性需要在set方法中引发PropertyChanged事件,以使绑定正常工作。
还要确保您的对象将数据上下文设置为后面的代码。一种方法是在xaml窗口声明中。像这样设置数据上下文:
DataContext = {Binding RelativeSource = {RelativeSource.Self}}