将 CornerRadius 绑定到依赖属性

Posted

技术标签:

【中文标题】将 CornerRadius 绑定到依赖属性【英文标题】:Binding CornerRadius to Dependency Property 【发布时间】:2014-01-29 18:34:15 【问题描述】:

我想绑定 CornerRadius 值。

CornerRadius="Binding CornerRadiusInfoBtn" 

这是TitleBar中的代码。

这是我的财产。

        public CornerRadius CornerRadiusInfoBtn
    
        get  return (CornerRadius)GetValue(CornerRadiusInfoBtnProperty); 
        set  SetValue(CornerRadiusInfoBtnProperty, value); 
    

    // Using a DependencyProperty as the backing store for CornerRadiusInfoBtn.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty CornerRadiusInfoBtnProperty =
        DependencyProperty.Register("CornerRadiusInfoBtn", typeof(CornerRadius), typeof(TitleBar), new PropertyMetadata(new CornerRadius(0.0,0.0,2.0,2.0)));

但是没有圆角。怎么了?

【问题讨论】:

圆角在哪里?它在 CornerRadius 类中吗? 您是否将数据上下文设置为TitleBar 的实例? 当我将值设置为大于 0 时,角会变圆。 属性在类MainWindowTitleBar? 对不起,我的错误,属性在标题栏中 【参考方案1】:

如果您在TitleBar.xaml.cs 文件中声明了您的DependencyProperty,那么您的TitleBar.xaml 文件应该包含一个Border,声明如下:

<Border CornerRadius="Binding CornerRadiusInfoBtn, RelativeSource=RelativeSource  
    AncestorType=x:Type YourXmlNamespacePrefix:TitleBar, Mode=OneWay" ... />

您要么需要将DataContext 属性设置为自身(除非快速演示,否则不建议这样做),或者使用上述RelativeSource Binding 来定位该属性。

【讨论】:

以上是关于将 CornerRadius 绑定到依赖属性的主要内容,如果未能解决你的问题,请参考以下文章

将 GeometryDrawing 画笔绑定到自定义控件依赖属性

将字符串项绑定到 xaml 中字符串的依赖属性列表

WPF:将静态资源绑定到用户控件中的依赖项属性

UserControl:如何转换依赖属性并绑定到结果

UI绑定依赖属性的异步处理

WPF:绑定到依赖属性