내가이 같은 3 레벨의 데이터 바인딩 된 WPF 트 리뷰를 가지고 말 :특정 수준의 WPF TreeView에 어떻게 바인딩 할 수 있습니까?
-
- AA
- AAA를
- BBB
- CCC
- AA
- b,515,
- AA BB
-
- AAA
- C
- AA
- AAA
- BB
- CC
- AAA
- BBB
- CCC
- AA
여기서 선택된 노드 bbbccc이다. TreeView 외부에있는 일부 컨트롤에서 cc이라는 말을 묶는 방법이 있습니까?
UPDATE이 구문을 사용하여 목록 상자에서 선택한 항목에 결합 할 수있는 방법에 비슷한 일이다 나는 여기 얻으려고
:
<TextBox Text="{Binding Path=VM.Definitions/term}" />
을 어디옵니다 ItemsSource는 VM.Definitions 및 ListBox에 바인딩됩니다. IsSynchronizedWithCurrentItem은 True로 설정됩니다. 내가 범위가 비슷한 HierarchicalDataTemplates와 TreeView의 특정 수준에 바인딩하는 방법이 있는지 알아 내려고하고있어.
내가 H.B.을 받아 : 나는 IT에게 작업을했다 방법
답을 찾았지만, Tim Murphy의 대답을 조합하여 "빛을 보게"했습니다.너는 (AFAIK) ListBox의 단일 레벨에 바인딩 할 수있는 것처럼 TreeView의 레벨에 바인딩 할 수 없다. 실제로는 할 수 있지만 특정 레벨은 바인딩 할 수 없다.
그래서 내가해야 할 일은 선택 사항이 변경 될 때마다 TreeView의 각 레벨에서 선택되는 모든 것이 나의 VM에 연결된다는 것입니다. 예를 들어 Customer, Order, OrderItem의 세 가지 수준이있는 TreeView가 있다고 가정 해보십시오. SelectedItemChanged에서 VM의 각 레벨을 다시 설정합니다.
선택한 항목이 고객 인 경우 VM.SelectedCustomer가 고객으로 설정되고 VM.SelectedOrder 및 VM.SelectedOrderItem이 null로 설정됩니다. 선택한 항목이 Order 인 경우 VM.SelectedCustomer를 선택한 항목의 상위 항목으로 설정하고 VM.SelectedOrder를 선택한 항목으로 설정하고 VM.SelectedOrderItem을 null로 설정합니다. 등등.
빠른 예 (나의 실제 코드, 단지 개념을 시연하기 위해) :
void TreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
if (treeViewLesson.SelectedItem == null) {
VM.SelectedOrderItem = null;
VM.SelectedOrder = null;
VM.SelectedCustomer = null;
}
else if (treeViewLesson.SelectedItem is Customer) {
VM.SelectedOrderItem = null;
VM.SelectedOrder = null;
VM.SelectedCustomer = treeViewLesson.SelectedItem as Customer;
}
else if (treeViewLesson.SelectedItem is Order) {
VM.SelectedOrderItem = null;
VM.SelectedOrder = treeViewLesson.SelectedItem as Order;
VM.SelectedCustomer = VM.SelectedOrder.ParentCustomer;
}
else if (treeViewLesson.SelectedItem is OrderItem) {
VM.SelectedOrderItem = treeViewLesson.SelectedItem as OrderItem;
VM.SelectedOrder = VM.SelectedOrderItem.ParentOrder;
VM.SelectedCustomer = VM.SelectedOrder.ParentCustomer;
}
}
당신이 MVVM 패턴을 사용하고 있습니까? 어떤 언어로 읽기가 편리합니까? –
저는 MVVM 패턴을 주로 따르고 있습니다. "코드 숨김"은 C# –