ObservableCollection에 바인딩 된이 ListBox가 있습니다. 목록의 각 개체는 ISelectable이라는 인터페이스를 구현합니다.ListBox의 SelectedItem을 어떻게 동기화합니까?
public interface ISelectable : INotifyPropertyChanged
{
event EventHandler IsSelected;
bool Selected { get; set; }
string DisplayText { get; }
}
선택 방법에 관계없이 어떤 개체가 선택되었는지 추적하고 싶습니다. 사용자는 ListBox에서 객체의 표현을 클릭 할 수 있지만 코드를 통해 객체가 선택 될 수도 있습니다. 사용자가 ListBox를 통해 개체를 선택하면 선택한 항목을 ISelectable에 캐스팅하고 Selected 속성을 true로 설정합니다.
ISelectable selectable = (ISelectable)e.AddedItems[0];
selectable.Selected = true;
내 문제는 코드를 사용하여 개체를 선택하면 ListBox에서 선택한 항목을 변경할 수 없다는 것입니다. 선택한 개체를 다른 색으로 표시하는 DataTemplate을 사용하여 모든 것이 올바르게 표시되는지 확인합니다. 그러나 ListBox에는 사용자가 SelectedItem으로 클릭 한 마지막 객체가 있습니다. 즉, 목록에서 다른 객체를 먼저 선택하지 않으면 해당 객체를 클릭 할 수 없습니다.
누구든지이 문제를 해결하는 방법에 대한 아이디어가 있습니까? Mouse 및 Keyboard 이벤트를 처리하기 위해 사용자 정의 코드를 작성하여 원하는 것을 성취 할 수 있다고 확신하지만 오히려 그렇지 않습니다. 컬렉션에 SelectedItem 속성을 추가하고 ListBox의 SelectItemProperty에 바인딩하려고했지만 행운이 없습니다.
이것은 정확하게 내가 찾고 있었던 것이었다. 감사! –