2009-07-05 6 views
4

데이터 테이블에 바인딩 된 데이터 바인딩 된 다중 선택 목록 상자가 있습니다. listboxitem을 선택하면 같은 목록 상자의 다른 listbox 항목이 자동으로 선택되기를 원합니다. 한 번의 클릭으로 여러 항목을 선택하고 싶습니다. 내가 어떻게 할 수 있니? SelectionChanged 이벤트에서이 이벤트를 다시 수행 할 수 없으며 동일한 이벤트를 다시 호출하여 내 논리를 완전히 파기하기 때문에 이벤트를 수행 할 수 없습니다.다중 선택 WPF 목록 상자 한 번의 클릭으로 여러 선택 만들기

도와주세요. 어떤 도움을 주시면 감사하겠습니다.

UPDATE :

내 목록 상자가 이미에 isSelected column.I이 ListBoxItem의의 selected.Suppose를 만들기 위해 스타일 세터에서이 열의 값을 사용하고있는 데이터 테이블에 바인딩 내가이 10 행 사용자가 두 번째 목록 상자 항목을 선택하면 데이터베이스의 해당 행을 1로 선택합니다.

그러나 다른 항목을 동시에 선택하려면 어떻게해야합니까? 나는 켄트가 말했듯이, 나는 오히려 구속력을 위해 속성을 사용한다고 생각한다. 하지만 속성을 사용하여 목록 상자를 데이터 테이블에 바인딩 할 수 있습니까?

답변

0

다른 '좋아요'항목 선택을 처리 할 해당 속성에 대한 설정자의 로직이있는 "SelectedItem"속성을 사용하게됩니까?

아마 내가가는 길 일세. 자세한 내용은 말하기가 어렵다.

8

데이터 클래스의 속성에 IsSelected을 바인딩하십시오.

<ListBox> 
    <ListBox.ItemContainerStyle> 
     <Style TargetType="ListBoxItem"> 
      <Setter Property="IsSelected" Value="{Binding IsSelected}"/> 
     </Style> 
    </ListBox.ItemContainerStyle> 
</ListBox> 

그런 다음 데이터 클래스에서이 같은 수 있습니다 : 속성이 변경되면, 다른 데이터 객체에 IsSelected 속성을 업데이트하는 논리를 실행

public bool IsSelected 
{ 
    get { return _isSelected; } 
    set 
    { 
     if (_isSelected != value) 
     { 
      _isSelected = value; 
      OnPropertyChanged("IsSelected"); 

      UpdateOtherItems(); 
     } 
    } 
} 

을 아니면있을 수 있습니다 데이터 항목은 IsSelectedChanged 이벤트를 발생시키고 소유 클래스는 선택 항목의 상호 의존성을 관리하게합니다.

0

나는 비슷한 일을하고있다.

데이터베이스에서 Selected Value 속성을 사용하여로드하는 단일 선택 콤보 상자가 있으며 이제는 다중 선택 목록 상자에서 바인딩 할 필요가있는 데이터베이스 목록이 있습니다. 내 목록 상자에서 선택한 목록으로 이동하십시오.

루프가 없어도이를 수행 할 방법이 없습니다.

Items, SelectedItem/Index/Value 또는 Item 또는 SelectedItem의 읽기 전용 속성을 가져 오거나 설정하기위한 읽기/쓰기 속성을 볼 수 있습니다.

0

어쩌면 이것은 부정 행위 일 수 있습니다. 그러나 SelectionChanged 이벤트에 항목을 추가 할 때 여러 항목을 선택한 다음 이후 항목을 true로 설정하는 동안 IsEnabled를 false로 설정해 보았습니다. 발사 이벤트를 제어합니까?