我有我使用的是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