完全绑定控件,而不仅仅是属性

时间:2014-02-10 12:26:08

标签: c# wpf silverlight xaml windows-phone-8

我正在使用用户控件开发Windows Phone 8应用程序。

这个用户控件有一个边框,我想创建一个DependencyProperty来访问这个边框:

public partial class CustomOptionButton : UserControl
{

    public Border OuterBorder
    {
        get
        {
            return (Border)GetValue(OuterBorderProperty);
        }

        set
        {
            SetValue(OuterBorderProperty, value);
        }
    }

    public readonly DependencyProperty OuterBorderProperty =
        DependencyProperty.Register("OuterBorder", typeof(Border), typeof(CustomOptionButton), null);

但我不知道如何在XAML中绑定此属性。

当我绑定TextBlock.Text时,我在XAML上执行了此操作:

<TextBlock x:Name="CustomText" Text="{Binding ButtonText, ElementName=userControl}" />

但是,我如何对整个边境做同样的事情?

<Border x:Name="OutBorder" BorderBrush="White" BorderThickness="2" Margin="0">

我需要更改BorderBrushBorderThickness(以及其他属性),所以我认为我只能拥有一个属性而不是三个或四个。

1 个答案:

答案 0 :(得分:0)

在这种情况下,您需要为每种类型的单独的属性创建,因为要使用一个属性Border需要创建一个单独的Control,如下所示:

public сlass MyBorderControl : Border
{
    // Your implementation of Control
}

如果您要创建可用于任何Control的属性,则WPF中的 attached 属性:

MSDN: Attached properties overview

并像这样使用:

<Canvas>
    <Button Canvas.Left="50">Hello</Button>
</Canvas>

在这种情况下,Canvas.Left附加属性用于Button类。