Проблемы с привязкой пользовательского объекта к пользовательскому элементу управления - PullRequest
0 голосов
/ 23 января 2019

Я создал такой объект:

 public class Widget : INotifyPropertyChanged {
      int miValue;      

      public int Value {
           get => miValue;
           set {
                miValue = value;
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Value");
           }
      }

      public event PropertyChangedEventHandler PropertyChanged;
 }

Теперь я также создал пользовательский элемент управления, который имеет ряд текстовых полей, которые привязываются к свойству пользовательского элемента управления:

    public StatBlock ( ) {
        InitializeComponent( );
        DataContext = this;
    }

    public int Points {
        get => ( int )GetValue( PointsProperty );
        set => SetValue( PointsProperty, value );
    }

    public static readonly DependencyProperty PointsProperty = DependencyProperty.Register("Points", typeof(int), typeof(StatBlock), new PropertyMetadata(0));

}

Если я использую этот UserControl в окне, я могу присвоить свойству Points статическое значение, и все будет работать правильно. Но если я привязываюсь к объекту, он не работает. Для тестирования я сделал следующее:

 <Window.Resources>
    <local:Widget x:Key="test" value="150"/>
</Window.Resources>
<Grid DataContext="{StaticResource test}">
    <local:StatBlock Points="{Binding Value}" Width="65" Height="65"/>
    <TextBox Width="150" Height="35" HorizontalAlignment="Left" Text="{Binding Value}"/>
</Grid>

В моем пользовательском элементе управления будет возвращено только значение 0, хотя мы видим, что это значение равно 150. На самом деле значение в стандарте TextBox является правильным. Я что-то пропустил? Спасибо.

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