c# – 在UserControl中设置ForegroundColor

我在WPF中编写用户控件,这是我自己的第一个控件.
对于您的信息,我使用Telerik控件.

我的用户控件只是一个Grid,其中只包含2个GridView.
现在我想通过设置前景和背景给某人设置GridView样式的可能性.

我都是这样设定的:

Background="{Binding ElementName=Grid, Path=DarkBackground}"
Foreground="{Binding ElementName=Grid, Path=LightForeground}"

我的代码背后是:

public static DependencyProperty LightForegroundProperty = DependencyProperty.Register( "LightForeground", typeof( Brush ), typeof( ParameterGrid ) );
public Brush LightForeground
{
  get
  {
    return (Brush)GetValue( LightForegroundProperty );
  }
  set
  {
    SetValue( LightForegroundProperty, value );
  }
}

public Brush DarkBackground
{
  get
  {
    return (Brush)GetValue( DarkBackgroundProperty );
  }
  set
  {
    SetValue( DarkBackgroundProperty, value );
  }
}

问题是我的前景,背景值在运行时被忽略.
要为Foreground设置修复值,会带来预期结果.

我没有发现我的错误,有谁有想法?

解决方法:

所以澄清一下……你有一个带内置网格和2个GridView的UserControl.

要引用UserControl上的依赖项属性……可以通过不同方式完成.

将DataContext设置为Self(代码隐藏)

在UserControl的构造函数中,将DataContext设置为指向UserControl实例.

DataContext = this;

然后访问您的属性,如下所示:

Background="{Binding DarkBackground}"
Foreground="{Binding LightForeground}"

将DataContext设置为Self(XAML)

如果您不想通过代码隐藏来执行此操作,则可以使用XAML.

<UserControl DataContext="{Binding RelativeSource={RelativeSource Self}}">

使用UserControl和ElementName上的名称来引用它

在您的UserControl上输入x:Name =“MyUserControl”,然后使用ElementName引用它.

Background="{Binding ElementName=MyUserControl, Path=DarkBackground}"
Foreground="{Binding ElementName=MyUserControl, Path=LightForeground}"

使用RelativeSource告诉Binding属性的来源.

通过使用RelativeSource在树中搜索UserControl来指定​​Binding的“源”.

Background="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl}}, Path=DarkBackground}"
Foreground="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl}}, Path=LightForeground}"
上一篇:java – 如何使按钮的前景属性在API 23下工作?


下一篇:android – 当应用程序返回前台时出现问题