Привязка свойства к целому числу - PullRequest
3 голосов
/ 30 марта 2011

Я читал много уроков, но почему-то ничего не работает, они упоминают о привязке свойства к простому целому числу.

Вот настройки:

У меня есть пользовательский контроль. Я хочу связать "private int size" с шириной границы в XAML-файле.

Какой самый простой способ сделать это?

Ответы [ 2 ]

5 голосов
/ 30 марта 2011

Точно так же, как вы связываете что-либо еще:

<Border BorderThickness="{Binding Size}">
private int _Size;
public int Size
{
    get { return _Size; }
    set 
    {
        _Size = value; 
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs("Size");
    }
}

Конечно, ваш класс должен также реализовать INotifyPropertyChanged.

1 голос
/ 30 марта 2011

Другой способ - объявить новое свойство зависимости и применить TemplateBinding

Вот шаблон элемента управления, в котором я установил привязку свойства Size к ширине.

<Style TargetType="{x:Type local:MyUserControl}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type local:MyUserControl}">
                <Border Background="{TemplateBinding Background}"
                        BorderBrush="{TemplateBinding BorderBrush}"
                        BorderThickness="{TemplateBinding BorderThickness}">
                    <TextBox Width="{TemplateBinding Size}"/>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>



public class MyUserControl : Control
{
    static MyUserControl()
    {
        DefaultStyleKeyProperty.OverrideMetadata(typeof(MyUserControl), new FrameworkPropertyMetadata(typeof(MyUserControl)));
    }

    public int Size
    {
        get { return (int)GetValue(SizeProperty); }
        set { SetValue(SizeProperty, value); }
    }

    // Using a DependencyProperty as the backing store for Size.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty SizeProperty =
        DependencyProperty.Register("Size", typeof(int), typeof(MyUserControl), new UIPropertyMetadata(20));
}

Ссылка Ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...