Как добавить DependencyProperty к кнопке?

Я ' m в основном просто пытается добавить пару свойств к кнопке, чтобы сохранить дополнительную информацию, которая будет использоваться позже. Мой выбор сделать это вместо создания UserControl на основе Button был исключительно потому, что он казался меньше кода.

Я следил за примерами, которые видел на сайте Microsoft, и получаю сообщение об ошибке «A 'Binding "не может быть установлено в свойстве" SetSortIndicatorVisibility "типа" Button "." Привязка "может быть установлена ​​только в DependencyProperty объекта DependencyObject." Это не имеет смысла, потому что Button - это DependencyObject, а я добавляю DependencyProperty. Сначала я начал с AttachedProperty, но с тех пор исправил это. Я даже взял весь свой код, связанный с этим, и поместил его в тестовый проект, но все еще получаю эту ошибку. Весь этот тестовый код приведен ниже:

Определение DependencyProperty:

public static readonly DependencyProperty SortIndicatorVisibilityProperty = DependencyProperty.Register( "SortIndicatorVisibility", typeof( Visibility ), typeof( Button ), new FrameworkPropertyMetadata( Visibility.Visible, FrameworkPropertyMetadataOptions.AffectsRender ) );

    public static void SetSortIndicatorVisibility( Button button, Visibility value )
    {
        button.SetValue( SortIndicatorVisibilityProperty, value );
    }
    public static Visibility GetSortIndicatorVisibility( Button button )
    {
        return ( Visibility ) button.GetValue( SortIndicatorVisibilityProperty );
    }

Окно XAML, содержащее кнопку с новым свойством и привязкой:

<Window x:Class="Testing.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:ext="clr-namespace:Testing"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <Button Content="Test"
            Command="{Binding TestCommand}"
            ext:Class1.SortIndicatorVisibility="{Binding SortIndicatorVisibilitySiteName}" />
</Grid>

Наконец, свойство DependencyProperty, к которому привязано:

public Visibility SortIndicatorVisibilitySiteName
    {
        get
        {
            return Visibility.Visible;
        }
    }
5
задан Ben 15 January 2011 в 20:55
поделиться