依赖属性和绑定错误
本文关键字:错误 绑定 属性 依赖 | 更新日期: 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;