我有我使用的是DataTemplate
内的用户控件,这UserControl
包含被绑定我UserControl
的价值财产(声明为DependencyProperty
)一个TextBox
。在数据模板中,我将这个值属性与我的实际属性说名称(也是DependencyProperty
)。它正常工作,我分配一个值来名称的特性,同时加载和我TextBox
显示它,我改变从TextBox
的价值,同时也更新我的名称属性。 现在,当我在依赖项属性中添加PropertyChangedEventHandler
时,问题出现了,我检查该值是否有效,如果有效,则不执行任何操作,如果无效,则执行任何操作。在价值无效的情况下,当我将其分配给旧值时,属性更新但它不显示更新值在我的TextBox
的UserControl
中。谁能告诉我为什么?WPF:文本框的文本没有更新
XAML的我UserControl
:
<UserControl x:Name="usercontrol">
<StackPanel>
<TextBlock ......./>
<TextBox Binding={Binding ElementName=usercontrol, Path=Value, Mode=TwoWay}/>
</StackPanel>
</UserControl>
在后面值代码是DependencyProperty
我在我的DataTemplate
使用此:
<HierarchicalDataTemplate DataType="{x:Type myLib:myClass}" ItemsSource="{Binding Children}">
<Expander Header="{Binding}">
<WrapPanel>
<edproperty:TextPropertyEditor Caption="Name" Value="{Binding Name, Mode=TwoWay}"/>
<edproperty:TextPropertyEditor .................../>
<edproperty:TextPropertyEditor .................../>
<edproperty:TextPropertyEditor ...................../>
</WrapPanel>
</Expander>
</HierarchicalDataTemplate>
此模板我在中使用。里面TreeView
我进入这将更新我UserControl
的价值属性TextBox
值,这反过来又更新名称的myClass
我分配财产PropertyChangedCallback
我名称属性,myClass
,执行一些验证和重新分配OldValue
如果验证失败。它反过来更新价值财产也,但我仍然看到TextBox
具有相同的价值,我刚才进入而不是更新的一个。
没有看到您的代码,这将是一个难以适当评论。你可以发布你的代码吗? – 2009-10-30 10:54:48
它太多了,不能发布。你可以问你是否想要更多的解释。 – viky 2009-10-30 13:27:59
不,你可以写最小的代码片来重现......否则,我们会猜测,而不是回答。没有人喜欢不确定性。特别是程序员.. – Anvaka 2009-10-30 14:49:42