Я создал такой объект:
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
является правильным. Я что-то пропустил? Спасибо.