2014-06-16 5 views
0

나는 왼쪽에 ListBox가 있고 오른쪽에 TextBox가있다. TextBox는 ListBox의 Selected Item에 바인딩됩니다. Textbox에는 SaveContentCommand가 있습니다.ListBox에 바인딩 된 SelectedItem

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

내 텍스트 상자 다음의 selectedItem의 설정 방법에

<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

바인딩 구문을 게시 할 수 있습니까? – pushpraj

+0

정확히 어떻게 SaveContentCommand를 실행합니까? – amnezjak

+0

예, 선택한 항목이 텍스트 상자와 바인딩되어 있으므로 SelectedItem이 변경되면 텍스트 상자 내용이 변경되고 SaveContentCommand가 실행됩니다. –

답변

1

이, 이전 항목을 저장합니다. 이 코드는 마우스로 새 항목을 선택할 때 선택된 항목이 변경 될 때 실행됩니다.

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

이 디펜 틸리는 작동하지만 매우 깨끗한 해결책은 아닙니다. :) – Kingpin