我有一个控件,我想在自己的类中将颜色绑定到plain属性。
但它无法正常工作???任何线索?
我有这个
public Brush SeperatorColour
{
get { return (Brush)GetValue(SeperatorColourProperty); }
set { SetValue(SeperatorColourProperty, value); }
}
// Using a DependencyProperty as the backing store for SeperatorColour. This enables animation, styling, binding, etc...
public static readonly DependencyProperty SeperatorColourProperty =
DependencyProperty.Register("SeperatorColour", typeof(Brush), typeof(TycoMessageBarMessage), new UIPropertyMetadata(Brushes.Crimson));
这个
<StackPanel Orientation="Horizontal" Background="Black" >
<Rectangle Name="MessageSeperator" Height="auto" Width="10" Fill="{Binding Path=SeperatorColour, ElementName=container, Mode=OneTime}" />
<TextBlock Name="MessageText" Text="Hello" Foreground="White" Margin="5,0" />
</StackPanel>
答案 0 :(得分:1)
的ElementName =容器
暗示您绑定到另一个名为'container'的XAML元素,您可能希望使用'SeperatorColour'属性绑定到该对象的某个实例。
如果您没有绑定到另一个XAML元素,请不要在绑定表达式中添加“ElementName”。
答案 1 :(得分:1)
您需要将控件的名称设置为container
:
<UserControl xmlns="..."
x:Name="container">
或使用相对绑定:
Fill="{Binding Path=SeperatorColour, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type MyControl}}, Mode=OneTime}"
此处,您需要指定控件的类型,而不是MyControl
。
如果它是自定义控件并且您显示的XAML位于控件的控件模板中,则可以使用TemplateBinding
:
Fill="{TemplateBinding SeperatorColour}"
答案 2 :(得分:0)
如果您已正确设置UserControl的DataContext -
,这应该可以正常工作 <Rectangle Name="MessageSeperator" Height="auto" Width="10" Fill="{Binding Path=SeperatorColour, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" />
在运行应用程序时,您在“输出”窗口中看到了什么?有没有数据绑定错误?
要调试数据绑定,请参阅 - http://bea.stollnitz.com/blog/index.php?s=presentationtrace