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
가 사용되지 않습니다.
그것은 물론 요구 사항이기도합니다.
읽기 전용 목록입니다. 선택한 항목 만 데이터 바인딩되어야하며 값이 없어야합니다.
실제로 WPF를 사용하지는 않지만 DataGrid
과거에 해본 적이 있으며 속성 을 사용할 수 없다는 Bind
것을 기억하는 것 같습니다 DataGrid.SelectedItem
... 전혀 쓸모없는 속성입니다. 그러나 나는 당신 이 거의 같은 일 을하는 재산에 할 수 있다고 믿는다 .Bind
DataGrid.CurrentItem
업데이트 >>>
방금 언급 한 StackOverflow의 항목 변경 게시물 이후에 WPF DataGrid SelectedItem 바인딩이 작동을 멈춘다 는 것을 방금 발견했습니다 .
또한 UI 요소에서 속성을 사용할 수있는 것 같습니다 . 에서 표시하는 것이므로 완전히 쓸모가 없습니다 ... 대부분 쓸모가 없습니다.DataGrid.SelectedItem
Binding
TextBox
업데이트 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] 삭제
몇 마디 만하겠습니다