我有一個ListBox
綁定到ObservableCollection
。每當我按下列表框項目時,我都可以在我設計的右側面板上看到信息。我這樣做,通過Binding
所選項目到每個TextBox
這樣的:如何保存數據後按鈕點擊綁定列表框
<TextBox Name="TextBoxEditName" Text="{Binding ElementName=ListBoxClients, Path=SelectedItem.Name}" />
哪裏ListBoxClients
是包含ObservableCollection
數據我ListBox
對象,並在這一特定TextBox
我展示它的Name
。
注:該部分工作正常。如果我在列表中選擇另一個項目,它會更改。
現在來了棘手的部分: 每當我編輯TextBox
,ListBox
項目正在同時更新。當我按下Save button
而不是前面時,我想要ListBox
項目更改。
我嘗試了所有Binding Modes
:
- 單向
- OneWayToSource
- ....
但同樣的效果發生了:當我TextBox
失去焦點時,ListBox
項目被改變。所以... 當我按下按鈕而不是之前,我該如何激發保存事件?
我後面的代碼:
private void ButtonSaveChanges_OnClick(object sender, RoutedEventArgs e)
{
DtoCustomer selectedCustomer = (DtoCustomer) ListBoxClients.SelectedItem;
if (selectedCustomer == null) return;
BindingExpression b = BindingOperations.GetBindingExpression(ListBoxClients, ListBox.ItemsSourceProperty);
b.UpdateSource();
}
它不工作...什麼是錯誤的,我後面的代碼?我的ListBox
綁定到ObservableCollection
。
如果我理解更新,添加UpdateSourceTrigger =顯式綁定,然後調用UpdateSource方法更新源代碼 http://msdn.microsoft.com/fr-fr/library/syste m.windows.data.binding.updatesourcetrigger(v = vs.110).aspx – mlemay
是的,就是這樣。但我的BindingExpression不起作用。只是看什麼可能是錯的。 – Sonhja