【发布时间】:2019-03-04 03:16:47
【问题描述】:
我有一个UserControl,它有一个Grid 和一个绑定的Background 属性。我的所有其他绑定都按预期工作,但由于某种原因,我在UserControl 中获得的唯一颜色是我为DependencyProperty 设置的默认值。
在MainWindow.xaml 中引用UserControl:
<controls:MyUserControl Title="{Binding Path=MyObjects[0].Title" MyControlColor="{Binding Path=MyObjects[0].Color}" />
Title 按预期显示,但颜色不变。
MyUserControl 代码(我使用MyControlColorBrush 作为颜色源,它只是将MyControlColor 转换为SolidColorBrush。代码向下。):
<Grid Background="{Binding Path=MyControlColorBrush, RelativeSource={RelativeSource AncestorType=UserControl}}">
<TextBlock Text="{Binding Path=Title, RelativeSource={RelativeSource AncestorType=UserControl}}" />
</Grid>
MyUserControl.xaml.cs代码:
public Color MyControlColor
{
get { return (Color)GetValue(MyControlColorProperty); }
set { SetValue(MyControlColorProperty, value); }
}
public static readonly DependencyProperty MyControlColorProperty = DependencyProperty.Register("MyControlColor", typeof(Color), typeof(MyUserControl), new PropertyMetadata(Colors.Black));
然后是一个将颜色转换为SolidColorBrush的属性:
public SolidColorBrush MyControlColorBrush
{
get { return new SolidColorBrush(MyControlColor); }
}
关于我可能遗漏的任何想法?如果我检查MyControlColor 的值,它会显示正确的颜色,但Grid 的背景并没有从Black 改变。
【问题讨论】: