"SelectedGridItems"속성이있는 WPFToolkit-DataGrid 및 View-Model 클래스가 있습니다 WPFToolkit-Datagrid의 selectedItem 속성을 내 ViewModel 속성 ("SelectedGridItems")에 바인딩하려면 어떻게해야합니까?WPFToolkit-Datagrid의 selectedItem 속성을 내 viewmodel 속성에 바인딩하려면 어떻게해야합니까?
답변
는 인 selectionchanged 이벤트에 후크 연결된 속성입니다 ListBox의 선택된 항목 목록을 ViewModel에 채 웁니다. "ListBox"를 "DataGrid"로 간단히 변경할 수 있습니다.
http://marlongrech.wordpress.com/2009/06/02/sync-multi-select-listbox-with-viewmodel/
편집 : 데이터 그리드 버전에 대한 소스 코드를 추가 ... XAML에서
/// <summary>
/// Attached property that stores the selected items of a DataGrid
/// </summary>
public static class DataGridService
{
#region SelectedItems
/// <summary>
/// SelectedItems Attached Dependency Property
/// </summary>
public static readonly DependencyProperty SelectedItemsProperty = DependencyProperty.RegisterAttached(
"SelectedItems",
typeof(IList),
typeof(DataGridService),
new FrameworkPropertyMetadata((IList)null, new PropertyChangedCallback(OnSelectedItemsChanged)));
/// <summary>
/// Gets the SelectedItems property.
/// </summary>
/// <param name="d"><see cref="DependencyObject"/> to get the property from</param>
/// <returns>The value of the SelectedItems property</returns>
public static IList GetSelectedItems(DependencyObject d)
{
return (IList)d.GetValue(SelectedItemsProperty);
}
/// <summary>
/// Sets the SelectedItems property.
/// </summary>
/// <param name="d"><see cref="DependencyObject"/> to set the property on</param>
/// <param name="value">value of the property</param>
public static void SetSelectedItems(DependencyObject d, IList value)
{
d.SetValue(SelectedItemsProperty, value);
}
/// <summary>
/// Handles changes to the SelectedItems property.
/// </summary>
/// <param name="d"><see cref="DependencyObject"/> that fired the event</param>
/// <param name="e">A <see cref="DependencyPropertyChangedEventArgs"/> that contains the event data.</param>
private static void OnSelectedItemsChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var grid = (DataGrid)d;
ReSetSelectedItems(grid);
grid.SelectionChanged += delegate
{
ReSetSelectedItems(grid);
};
}
/// <summary>
/// Sets the selected items collection for the specified <see cref="DataGrid"/>
/// </summary>
/// <param name="grid"><see cref="DataGrid"/> to use for setting the selected items</param>
private static void ReSetSelectedItems(DataGrid grid)
{
IList selectedItems = GetSelectedItems(grid);
selectedItems.Clear();
if (grid.SelectedItems != null)
{
foreach (var item in grid.SelectedItems)
{
selectedItems.Add(item);
}
}
}
#endregion
}
:
<tk:DataGrid ... local:DataGridService.SelectedItems="{Binding Path=MyCollection}" SelectionMode="Extended">
는 "MyCollection는"당신의 ViewModel의 ObservableCollection에 있어야한다 .
안녕하세요, 이것은 매우 유용한 링크입니다 ... 만난 적이있는 한 가지 문제는 DataGrid에 "selectedItems"라는 속성이 없습니다 ... "selecteditem"속성 만 사용하고 있습니다. 우리는 동일한 것을 극복하기 위해 무언가를 붙일 수 있습니까? 그렇다면 mvvm 모델에서 볼 수 있습니까 ... 뷰 모델에서 연결된 속성을 의미합니까? – Relativity
DataGrid에는 SelectedItems 속성이 있습니다. http://msdn.microsoft.com/en-us/library/system.windows.controls.datagrid.selecteditems(VS.95).aspx 원본을 포함하도록 답변을 업데이트했습니다. 코드를 DataGrid 버전의 속성에 추가합니다. –
나는 이것을 체크했다. 그러나 문제는 "OnSelectedItemsChanged"가 호출되지 않는다는 것이다. : ( – Relativity
이 코드는 WPF4의 DataGrid 용 코드입니다. 현재로서는 Toolkit에 액세스 할 수 없지만 다른 코드는 아닙니다. 데이터 그리드에서 단일 행을 바인딩에 대한
:
<DataGrid ItemsSource="{Binding ViewModelCollectionProperty}"
SelectedItem="{Binding Path=ViewModelProperty}">
</DataGrid>
가 선택한 여러 행을 결합하려면, 당신의 최선의 방법은 데이터 바인딩 할 수 있습니다 선택된 항목의 컬렉션을 유지 연결된 속성을 만들 아마 뷰 모델.
편집 -
아래에 추가 링크는 당신이 원하는 것을 매우 유사하고 연결된 속성을 만드는 방법에 대한 기사 여기를 참조하십시오 : 여기 http://alexshed.spaces.live.com/Blog/cns!71C72270309CE838!149.entry
MVVM 패턴을 따르고 있습니다 ... 그래서 view-codebehind 파일에 아무것도 쓸 수 없습니다. 1. WPFToolkit 컨트롤에 속성을 첨부 할 수 있습니까? 2. XAMl에서 attach 속성을 사용할 수 있습니까 (코드 숨김에서 RergisterAttached 사용하지 않음) – Relativity
Anish, 내가 편집 한 링크를 살펴보십시오. – ThomasAndersson
- 1. NSProgressIndicator를 NSOperation의 속성에 바인딩하려면 어떻게해야합니까?
- 2. ViewModel의 속성 및 컬렉션 항목의 속성에 ViewModel의 속성을 바인딩하려면 어떻게해야합니까?
- 3. 다른 DependencyProperty를 CheckBox의 IsChecked 속성에 바인딩하려면 어떻게해야합니까?
- 4. SelectedItem 속성의 속성에 바인딩
- 5. WPF ViewModel 속성에 바인딩
- 6. ControlTemplate의 SelectedItem 속성에 어떻게 바인딩합니까?
- 7. WPF에서 컨트롤 템플릿의 명령을 부모의 속성에 바인딩하려면 어떻게해야합니까?
- 8. 셀 값을 개체의 특정 속성에 바인딩하려면 어떻게합니까?
- 9. 필드를 WinForms의 컨트롤에 바인딩하려면 어떻게해야합니까?
- 10. ItemTemplate CheckBox의 Command 속성을 ViewModel 개체의 속성에 바인딩하는 방법은 무엇입니까?
- 11. WPF : vb 코드에서 controlTemplate에있는 그라디언트 정지의 color 속성을 바인딩하려면 어떻게해야합니까?
- 12. 무스 강제로 내 개체의 속성에 액세스하려면 어떻게해야합니까?
- 13. 개체를 스윙 테이블의 행에 바인딩하려면 어떻게해야합니까?
- 14. ObservableCollection을 DataTemplate의 TextBoxes에 바인딩하려면 어떻게해야합니까?
- 15. SelectedItem Trigger
- 16. DataGrid SelectedItem 속성을 사용하여 TemplateColumn의 모양 제어
- 17. ListBox의 항목을 인스턴스 개체의 목록에 바인딩하려면 어떻게해야합니까?
- 18. C++/CLI에서 ObservableCollection에 ListView를 바인딩하려면 어떻게해야합니까?
- 19. 속성에 속성을 지정 하시겠습니까?
- 20. 방법 : Silverlight 4에서 MVVM ViewModel 속성에 애니메이션을 적용 하시겠습니까?
- 21. Silverlight에서 ViewModel 속성을 볼 수있게 만들기
- 22. ASP.net ajax AccordionPane을 XMLDatasource에 바인딩하려면 어떻게해야합니까?
- 23. List를 ItemSource로 ListView에 XAML로 바인딩하려면 어떻게해야합니까?
- 24. ListBox 컨트롤을 WPF의 List에 바인딩하려면 어떻게해야합니까?
- 25. JQuery에서 인스턴스에 이벤트 핸들러를 바인딩하려면 어떻게해야합니까?
- 26. WPF ComboBox SelectedItem binding
- 27. Datalist의 SelectedItem
- 28. linq to xml gridview에 바인딩하려면 어떻게해야합니까?
- 29. 텍스트 상자를 구조 요소에 바인딩하려면 어떻게해야합니까?
- 30. 관계형 데이터를 ASP.net MVC의 모델에 바인딩하려면 어떻게해야합니까?
당신이 SelectedGridItems (복수형)를 썼다고 생각하면 DataGrid에 여러 항목을 선택하여 바인딩한다고 가정합니다. 그리드의 선택된 (단일) 행만 바인딩하려는 경우 매우 쉽습니다. 여러 개를 선택하려면 더 복잡합니다. – ThomasAndersson
여러 항목을 바인딩해야합니다. 하지만 단품으로 어떻게 할 수 있는지 말해 줄 수 있어요? 내 실제 요구 사항은 : http : //stackoverflow.com/questions/2910873/how-to-access-data-from-another-datatemplate-in-wpf. 버튼을 클릭하면 선택한 항목을 매개 변수로 전달하려고했습니다. 내가이 대기열에 대한 답변을 얻지 못했기 때문에 나는 wud가 선택된 항목을 뷰 모델 속성으로 설정했다고 생각했습니다. – Relativity