Datagrid의 SelectedItem을 읽기 전용 목록에 올바르게 바인딩하는 방법은 무엇입니까?

Gerard

xaml보기 :

<DataGrid x:Name="dgInstances" SelectedItem="{Binding Path=Instance, Mode=OneWay}"
            ItemsSource="{Binding Instances}"> SelectionMode="Single"> ... etc.

뷰 모델 :

public List<string> Instances
string instance;
public string Instance
{
    get
    {
        if (instance == null && instances.HasItems())
        {
            instance = instances[0];
        }
        if (instance != null)
        {
            return instance;
        }
        return null;
    }
    set
    {
        instance = value;
    }
}

view-model-class 구현 INotifyPropertyChanged하고 Instances가져온 RaisePropertyChanged("Instance");.
인스턴스가 데이터 그리드에 제대로 표시되지만 첫 번째 항목이 선택되지 않았습니다. 바인딩을 통해해야하기 때문에
추가하고 싶지 않습니다 SelectedIndex=0.
그리고 데이터 그리드에서 선택을 변경하면 데이터 바인딩의 setter Instance가 사용되지 않습니다.
그것은 물론 요구 사항이기도합니다.
읽기 전용 목록입니다. 선택한 항목 만 데이터 바인딩되어야하며 값이 없어야합니다.

Sheridan

실제로 WPF를 사용하지는 않지만 DataGrid과거에 해본 적이 있으며 속성 을 사용할 수 없다는 Bind것을 기억하는 것 같습니다 DataGrid.SelectedItem... 전혀 쓸모없는 속성입니다. 그러나 나는 당신 이 거의 같은 일 을하는 재산에 있다고 믿는다 .BindDataGrid.CurrentItem


업데이트 >>>

방금 언급 한 StackOverflow의 항목 변경 게시물 이후에 WPF DataGrid SelectedItem 바인딩이 작동을 멈춘다 는 것을 방금 발견했습니다 .

또한 UI 요소에서 속성을 사용할 수있는 것 같습니다 . 에서 표시하는 것이므로 완전히 쓸모가 없습니다 ... 대부분 쓸모가 없습니다.DataGrid.SelectedItemBindingTextBox


업데이트 2 >>>

실제로DataGrid.SelectedItem 속성 에 액세스해야하는 경우 이벤트 AttachedProperty를 처리하기 위해를 만들 수 있습니다 DataGrid.SelectionChanged.


업데이트 3 >>>

내 컬렉션 클래스는 클래스를 확장하는 사용자 지정 기본 클래스를 확장합니다 ObservableCollection<T>. 내 사용자 정의 BaseColection<T>클래스에는 CurrentItem유형 속성이 T있습니다. 나는이 속성을 사용하여 Bind받는 사람 SelectedItem컬렉션 제어. 그러나 이것은 표시되는 컬렉션의 항목과 동일한 유형의 뷰 모델에 속성을 추가하는 것과 동일한 효과가 있지만 더 편리합니다.

<ListBox ItemsSource="{Binding AudioTracks}" 
    SelectedItem="{Binding AudioTracks.CurrentItem}" ... />

그런 다음 컬렉션의 항목이 작고 편집이 필요한 모든 데이터가 포함 AudioTracks.CurrentItem된 경우 예제 이미지의 오른쪽에있는 편집 가능한 필드에 대한 속성을 사용합니다 . 그러나 데이터 개체에 이미지와 같이 많은 필드가있는 경우 AudioTracks.CurrentItem.Id속성 값을 사용 하여 데이터베이스로 전송하여 편집에 필요한 모든 값을 검색하는 반면 AudioTracks컬렉션 항목은 몇 가지 값만 보유합니다 ( 컬렉션에 27,000 개 이상이있을 수 있기 때문입니다.

마지막으로, 당신의 연결 예에 대하여 TreeView, 나는 일반적으로 사용자 지정을 사용 SelectedItems Attached Property으로 Bind받는 TreeView.SelectedItems... 부동산 당신이 온라인으로 검색하는 경우, 당신은 아마이 누군가의 예제 코드를 찾을 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

데이터 바인딩을 사용하여 WPF에서 컨트롤의 상태를 올바르게 변경하는 방법은 무엇입니까?

분류에서Dev

React (후크)에서 개체의 값을 읽고 표시하기 위해 setState 및 useEffect를 올바르게 사용하는 방법은 무엇입니까?

분류에서Dev

HughesPJ의 예쁜 인쇄 라이브러리를 사용하여 블록을 올바르게 들여 쓰기하는 방법은 무엇입니까?

분류에서Dev

툴바에서 사용자 정의보기를 올바르게 추가하는 방법은 무엇입니까?

분류에서Dev

목록에서 기본 옵션을 올바르게 선택하는 방법은 무엇입니까?

분류에서Dev

Qt에서 특정 인코딩으로 파일을 올바르게 읽는 방법은 무엇입니까?

분류에서Dev

Java에서 ForkJoinPool을 올바르게 동기화하고 재사용하는 방법은 무엇입니까?

분류에서Dev

Powerpoint 템플릿에서 글 머리 기호 목록을 올바르게 설정하고 사용하는 방법은 무엇입니까?

분류에서Dev

R에서 필터 기능을 올바르게 적용하는 방법은 무엇입니까?

분류에서Dev

PHP에서 isset 기능을 올바르게 사용하는 방법은 무엇입니까?

분류에서Dev

Spring Java 기반 구성에서 @Inject 주석을 올바르게 사용하는 방법은 무엇입니까?

분류에서Dev

버전간에 호환되도록 libsodium을 올바르게 사용하는 방법은 무엇입니까?

분류에서Dev

QCompleter 팝업 목록의 목록 항목을 올바르게 포맷하는 방법은 무엇입니까?

분류에서Dev

C에서 stdin을 올바르게 읽는 방법은 무엇입니까?

분류에서Dev

JSP를 사용하여 쿠키 값을 올바르게 얻는 방법은 무엇입니까? 값에 '='가있는 쿠키 읽기가 잘립니다.

분류에서Dev

ComboBox의 SelectedItem 및 SelectedIValue에 다른 속성을 바인딩하는 방법은 무엇입니까?

분류에서Dev

pyqt에서 스레딩을 올바르게 사용하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 CSS의 여러 줄을 플로팅하기 위해 for 루프를 올바르게 사용하는 방법은 무엇입니까?

분류에서Dev

R에서 ANCOVA의 한계 수단을 추출하기 위해 stack () 함수를 올바르게 사용하는 방법은 무엇입니까?

분류에서Dev

fstab을 사용하여 chroot jails 내의 디렉토리를 올바르게 바인딩하는 방법은 무엇입니까?

분류에서Dev

버전을 비교하기 위해 strtok를 올바르게 사용하는 방법은 무엇입니까?

분류에서Dev

Web API의 데이터를 WPF의 ListBox에 올바르게 바인딩하는 방법은 무엇입니까?

분류에서Dev

Angular 11 / TS 4의 속성에 대한 기본값을 올바르게 사용하는 방법은 무엇입니까?

분류에서Dev

C에서 C ++ 클래스 사용 : 일종의 "삭제 / 삭제"기능을 올바르게 작성하는 방법은 무엇입니까?

분류에서Dev

Q를 바인딩하여 Vim에서 읽기 전용 버퍼를 닫는 방법은 무엇입니까?

분류에서Dev

Python에서 코덱의 인코딩을 사용하는 올바른 방법은 무엇입니까?

분류에서Dev

단어를 자르지 않고 버퍼를 사용하여 stdin에서 입력을 올바르게 읽을 수있는 방법은 무엇입니까?

분류에서Dev

GPU 전력을 올바르게 활용하는 방법은 무엇입니까?

분류에서Dev

MVC의 게시물에서 모델을보기 위해 복잡한 개체 목록을 바인딩하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    데이터 바인딩을 사용하여 WPF에서 컨트롤의 상태를 올바르게 변경하는 방법은 무엇입니까?

  2. 2

    React (후크)에서 개체의 값을 읽고 표시하기 위해 setState 및 useEffect를 올바르게 사용하는 방법은 무엇입니까?

  3. 3

    HughesPJ의 예쁜 인쇄 라이브러리를 사용하여 블록을 올바르게 들여 쓰기하는 방법은 무엇입니까?

  4. 4

    툴바에서 사용자 정의보기를 올바르게 추가하는 방법은 무엇입니까?

  5. 5

    목록에서 기본 옵션을 올바르게 선택하는 방법은 무엇입니까?

  6. 6

    Qt에서 특정 인코딩으로 파일을 올바르게 읽는 방법은 무엇입니까?

  7. 7

    Java에서 ForkJoinPool을 올바르게 동기화하고 재사용하는 방법은 무엇입니까?

  8. 8

    Powerpoint 템플릿에서 글 머리 기호 목록을 올바르게 설정하고 사용하는 방법은 무엇입니까?

  9. 9

    R에서 필터 기능을 올바르게 적용하는 방법은 무엇입니까?

  10. 10

    PHP에서 isset 기능을 올바르게 사용하는 방법은 무엇입니까?

  11. 11

    Spring Java 기반 구성에서 @Inject 주석을 올바르게 사용하는 방법은 무엇입니까?

  12. 12

    버전간에 호환되도록 libsodium을 올바르게 사용하는 방법은 무엇입니까?

  13. 13

    QCompleter 팝업 목록의 목록 항목을 올바르게 포맷하는 방법은 무엇입니까?

  14. 14

    C에서 stdin을 올바르게 읽는 방법은 무엇입니까?

  15. 15

    JSP를 사용하여 쿠키 값을 올바르게 얻는 방법은 무엇입니까? 값에 '='가있는 쿠키 읽기가 잘립니다.

  16. 16

    ComboBox의 SelectedItem 및 SelectedIValue에 다른 속성을 바인딩하는 방법은 무엇입니까?

  17. 17

    pyqt에서 스레딩을 올바르게 사용하는 방법은 무엇입니까?

  18. 18

    파이썬에서 CSS의 여러 줄을 플로팅하기 위해 for 루프를 올바르게 사용하는 방법은 무엇입니까?

  19. 19

    R에서 ANCOVA의 한계 수단을 추출하기 위해 stack () 함수를 올바르게 사용하는 방법은 무엇입니까?

  20. 20

    fstab을 사용하여 chroot jails 내의 디렉토리를 올바르게 바인딩하는 방법은 무엇입니까?

  21. 21

    버전을 비교하기 위해 strtok를 올바르게 사용하는 방법은 무엇입니까?

  22. 22

    Web API의 데이터를 WPF의 ListBox에 올바르게 바인딩하는 방법은 무엇입니까?

  23. 23

    Angular 11 / TS 4의 속성에 대한 기본값을 올바르게 사용하는 방법은 무엇입니까?

  24. 24

    C에서 C ++ 클래스 사용 : 일종의 "삭제 / 삭제"기능을 올바르게 작성하는 방법은 무엇입니까?

  25. 25

    Q를 바인딩하여 Vim에서 읽기 전용 버퍼를 닫는 방법은 무엇입니까?

  26. 26

    Python에서 코덱의 인코딩을 사용하는 올바른 방법은 무엇입니까?

  27. 27

    단어를 자르지 않고 버퍼를 사용하여 stdin에서 입력을 올바르게 읽을 수있는 방법은 무엇입니까?

  28. 28

    GPU 전력을 올바르게 활용하는 방법은 무엇입니까?

  29. 29

    MVC의 게시물에서 모델을보기 위해 복잡한 개체 목록을 바인딩하는 방법은 무엇입니까?

뜨겁다태그

보관