我创建了各种具有依赖属性的UserControls。当属性发生变化时有些更新而其他属性没有更新,即使我确信我已经正确完成了。 我的视图模型中有一个属性绑定到我的用户控件中的以下属性,如下所示:
<reporting:LegendLabelControl
Grid.Column="1"
Grid.Row="3"
Text="{Binding Path=Item.StatusName, UpdateSourceTrigger=PropertyChanged}"
UpdateSourceTrigger=PropertyChanged}"/>
“文本”值显示第一次,但后续更新不反映更改。如果我将其交换为TextBlock,TextBlock确实更新它不是属性的问题。 依赖属性如下:
public static readonly DependencyProperty TextProperty = DependencyProperty.Register(
"Text", typeof (string), typeof (LegendLabelControl),
new FrameworkPropertyMetadata(OnTextChanged)
{
DefaultUpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
});
所有相当简单的方法和手动设置用户控件的TextBlock:
public string Text
{
get { return (string)GetValue(TextProperty); }
set
{
SetValue(TextProperty, value);
TxtLabel.Text = value;
}
}
你会认为这很好,但它只在第一次工作。 现在,我的解决方法是删除依赖项属性setter,以便它认为它没有像这样设置:
public string Text
{
get { return (string)GetValue(TextProperty); }
set
{
//SetValue(TextProperty, value);
TxtLabel.Text = value;
}
}
任何人都可以解释我做错了什么。我一直在和WPF一起工作几年,并掌握了大部分内容,但这只是让我感到困惑。
答案 0 :(得分:-1)
我注意到你的setvalue
SetValue(TextProperty, value);
也许这会覆盖你的装订。 请尝试使用绑定模式twoway或setcurrentvalue。
也许是一边。 我会避免使用框架中已存在的属性名称。 当您注册属性名称时,如果它不是唯一的,那么可能会发生不好的事情。 它也更清楚你正在做什么。