Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 绑定到列表框SelectedItem_C#_Wpf_Mvvm_Binding_Selecteditem - Fatal编程技术网

C# 绑定到列表框SelectedItem

C# 绑定到列表框SelectedItem,c#,wpf,mvvm,binding,selecteditem,C#,Wpf,Mvvm,Binding,Selecteditem,我有一个窗口,左边是列表框,右边是文本框。文本框绑定到列表框的选定项。文本框有一个SaveContentCommand 如果将文本框保留为Enter或Tab,则会正确执行SaveContentCommand。但是,如果我使用鼠标选择其他内容,selecteditem将被更改,然后执行savecontent命令。这意味着SaveContentCommand用于另一项 我尝试过破解类似重命名ElastSelectEdItem()的东西 但是有没有正确/更好的方法 我的名单: <customCo

我有一个窗口,左边是列表框,右边是文本框。文本框绑定到列表框的选定项。文本框有一个SaveContentCommand

如果将文本框保留为Enter或Tab,则会正确执行SaveContentCommand。但是,如果我使用鼠标选择其他内容,selecteditem将被更改,然后执行savecontent命令。这意味着SaveContentCommand用于另一项

我尝试过破解类似重命名ElastSelectEdItem()的东西 但是有没有正确/更好的方法

我的名单:

<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}">

我的文本框:

<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}"

在SelectedItem的set方法中,保存上一项。当用鼠标选择新项目时,更改所选项目时,将运行此代码

SelectedItem
{get { return _selectedItem;}  
 set 
 {
  //null check
  SaveContent(_selectedItem);
  _selectedItem = value;
 }
}

你能发布你的绑定语法吗?你到底是如何执行SaveContentCommand的?是的,因为你选择的项目与Textbox绑定,所以当你的SelectedItem被更改时,你的Textbox内容会被更改,SaveContentCommand Fire我知道,但我认为savecontent应该在更改SelectedItem之前执行。否选择EdItem change savecontent call。这是正确的,但它看起来不像一个非常干净的解决方案:)