左侧有一个带ListBox的窗口,右侧有一个TextBox。文本框绑定到ListBox的Selected Item。文本框有一个SaveContentCommand。
如果您使用Enter或Tab离开文本框,则SaveContentCommand执行正确。但是,如果我使用鼠标选择其他东西,则更改selecteditem,然后执行SaveContentCommand。这意味着SaveContentCommand用于另一个项目。
我试图破解类似RenameLastSelectedItem()的东西 但是有正确/更好的方法吗?
我的清单:
<customControls:MyListBox x:Name="UserListBox"
Grid.Row="1"
Grid.Column="0"
ItemsSource="{Binding Users}"
SelectedItem="{Binding SelectedItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
VerticalAlignment="Top"
Style="{DynamicResource MyListBoxStyle}"
ItemContainerStyle="{DynamicResource MyListBoxItemUserListStyle}">
My TextBox:
<customControls:MyTextBox x:Uid="textBoxName"
x:Name="textBoxNameOfSelectedItems"
Text="{Binding SelectedItem.Name, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=true, Mode=TwoWay}"
focus:FocusExtension.IsFocused="{Binding SelectedItem.IsNameFocused, Mode=TwoWay}"
focus:FocusExtension.EnableSelection="True"
UseKeyboardBinding="true"
Style="{DynamicResource MyTextBoxStyle}"
SaveContentCommand="{Binding SelectedItem.UpdateCommand}"
答案 0 :(得分:1)
在SelectedItem的set方法中,保存上一个项目。当使用鼠标选择新项目时更改所选项目时,将运行此代码。
SelectedItem
{get { return _selectedItem;}
set
{
//null check
SaveContent(_selectedItem);
_selectedItem = value;
}
}