依赖属性和绑定错误

本文关键字:错误 绑定 属性 依赖 | 更新日期: 2023-09-27 18:17:41

找了几个小时,我来找你帮忙:

System.Windows。BindingExpression路径错误:'Test'在"object"上找不到属性

我找不到我的绑定错误在哪里…

在主窗口我有:

<Exec:PriceView Price="{Binding Test}"/>
<TextBlock Text="{Binding Test}"/>

在我的TextBlock中,与Test属性的绑定是完美工作的。

但是对于我的PriceView控件,它不是。

PriceView.xaml

<StackPanel>
 <TextBlock Text="{Binding Price}" FontSize="26" FontFamily="Arial"/>
</StackPanel>

PriceView.xaml.cs

public partial class PriceView : UserControl
{
    public PriceView()
    {
        this.InitializeComponent();
        this.DataContext = this;
    }
    #region Dependency Property
    public static readonly DependencyProperty PriceProperty = DependencyProperty.Register("Price", typeof(float), typeof(PriceView));
    public float Price
    {
        get { return (float)GetValue(PriceProperty); }
        set { SetValue(PriceProperty, value); }
    }
    #endregion
}

我做错了什么?

依赖属性和绑定错误

你所拥有的实际上是:

<Exec:PriceView Price="{Binding Test}"
                DataContext="{Binding RelativeSource={RelativeSource Self}}"/>
<TextBlock Text="{Binding Test}"/>

很明显为什么一个绑定可以工作而另一个不能。

经验法则:永远不要在UserControls上设置DataContext

感谢@H的评论。B我找到了答案:

永远不要在UserControls上设置DataContext

主窗口。xaml:

<Exec:PriceView Price="{Binding Test}"/>
<TextBlock Text="{Binding Test}"/>

PriceView。xaml:

<StackPanel x:name="root"> 
 <TextBlock Text="{Binding Price}" FontSize="26" FontFamily="Arial"/> 
</StackPanel> 

PriceView.xaml.cs:

this.root.DataContext = this;