我想知道是否可以更改綁定更新綁定到它的控件的時間。例如,我正在使用一個TextBox,它每次按下按鍵時都會更新,但我希望在它失去焦點時進行更新。
任何想法?正在更改Silverlight中可能的綁定時間
回答
好吧,這令我感到驚訝,因爲我認爲TextBox是一個控制它阻止其綁定源的更新,直到焦點移動到其他地方,一個小測試證實了這一點。
無論如何,讓我們想象它通常會在每次按鍵或某個控件上更新,就像它一樣。
一般的解決方案是對源更新進行「手動」控制。您可以使用UpdateSourceTrigger
屬性設置將其設置爲「顯式」。這意味着綁定的來源只有在您的代碼明確調用BindingExpression
上的UpdateSource
方法與「文本框」的TextProperty
綁定時纔會更新。
您可以執行此顯式更新,然後在「文本框」LostFocus
事件的事件處理程序中執行此操作。
例如,在最初的用戶控件添加此XAML: -
<Grid x:Name="LayoutRoot">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBox x:Name="Target" />
<TextBox x:Name="Source" Grid.Row="1"
Text="{Binding Text, ElementName=Target, Mode=TwoWay, UpdateSourceTrigger=Explicit}" LostFocus="Source_LostFocus"/>
</Grid>
現在在代碼隱藏事件處理程序是這樣的: -
private void Source_LostFocus(object sender, RoutedEventArgs e)
{
((TextBox)sender).GetBindingExpression(TextBox.TextProperty).UpdateSource();
}
+1:好主意。 –
不知道這是否是你想要什麼做的,但這裏有一個建議:
刪除綁定,然後爲你的文本框爲引發LostFocus添加事件:即。
private void TextBox_LostFocus(object sender, RoutedEventArgs e)
{
textBox.Text = originallyBindedValue;
}
不像通過XAML那樣乾淨,但你應該能夠得到你想要的行爲。
是的,我想過這樣做,但我希望避免在代碼背後做它。 –
- 1. 當DataSource更改時,DataGridRowGroupHeader中的Silverlight綁定不會更新
- 2. 我可以在Silverlight中檢測綁定更改嗎?
- 3. 如何在Silverlight DataGrid更新綁定數據時進行更改?
- 4. Silverlight更新綁定
- 5. 可能的數據綁定錯誤時的datacontext改變(Silverlight的4)
- 6. Silverlight數據綁定 - 是否有可能暫時中止
- 7. 可可綁定僅在窗口焦點更改時更新
- 8. 在DataTemplate中的TemplatedParent綁定的Silverlight RelativeSource,可能嗎?
- 9. 在指定自定義CalendarStyle時,Silverlight DatePicker不能更改月份
- 10. jgoodies綁定+間接更改
- 11. 在Silverlight中綁定動畫的持續時間屬性
- 12. 在調用期間更改`Proc`綁定
- 13. 在更改-observeValueForKeyPath:ofObject屬性時,可可綁定不起作用:ofObject:change:context:
- 14. Silverlight綁定不更新
- 15. 強制綁定更新Silverlight
- 16. 在Silverlight中將日期時間綁定到文本框
- 17. Silverlight DataGridTextColumn綁定可見性
- 18. Silverlight ListboxItem可見性綁定
- 19. 是否有可能將數據綁定到Silverlight中的方法?
- 20. 如何在Silverlight中使用Accordion.ItemTemplate時綁定AccordionItem可見性?
- 21. 綁定到ObservableCollection的Silverlight TabControl <string>集合發生更改時不更新
- 22. 在Silverlight中綁定DataGridHeader ContentTemplate
- 23. 在Silverlight中編程綁定
- 24. Canvas綁定在Silverlight中
- 25. 在Silverlight中綁定ColumnDefinitions
- 26. 在Silverlight中掛起綁定
- 27. 在Silverlight中綁定到IValueConverter
- 28. LINQ調試時間碼更改...在vs2008中可能嗎?
- 29. wpf combobox - 更改綁定後的性能
- 30. Datagridview在綁定時更改值
你能告訴使用你的一些xaml,我對你如何設法從TextBox中獲得這種行爲很感興趣? – AnthonyWJones