无法将自定义对象绑定到自定义用户控件

时间:2019-01-23 14:31:14

标签: c# xaml

我已经创建了一个像这样的对象:

 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>

即使我们看到该值是150,这也只会在我的用户控件中返回值0。实际上,标准TextBox中的值是正确的。我错过了什么?谢谢。

0 个答案:

没有答案