This repository has been archived by the owner on Dec 21, 2023. It is now read-only.
/
GalleryHelper.cs
41 lines (36 loc) · 1.61 KB
/
GalleryHelper.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using System.Windows;
using DevExpress.Xpf.Bars;
using DevExpress.Xpf.Mvvm.UI.Interactivity;
namespace DXSample {
public class GalleryHelper : Behavior<Gallery> {
public static readonly DependencyProperty SelectedItemProperty =
DependencyProperty.Register("SelectedItem", typeof(object), typeof(GalleryHelper), new PropertyMetadata(null, OnSelectedItemPropertyChanged));
private static void OnSelectedItemPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) {
((GalleryHelper)d).OnSelectedItemChanged(e);
}
public Gallery Gallery { get { return AssociatedObject; } }
public object SelectedItem {
get { return (object)GetValue(SelectedItemProperty); }
set { SetValue(SelectedItemProperty, value); }
}
protected override void OnAttached() {
base.OnAttached();
AssociatedObject.ItemChecked += AssociatedObject_ItemChecked;
}
void AssociatedObject_ItemChecked(object sender, GalleryItemEventArgs e) {
UpdateSelectedItem(e.Item);
}
private void OnSelectedItemChanged(DependencyPropertyChangedEventArgs e) {
CheckItem(SelectedItem);
}
private void UpdateSelectedItem(GalleryItem galleryItem) {
SelectedItem = galleryItem.DataContext;
}
private void CheckItem(object viewModel) {
foreach (var group in Gallery.Groups)
foreach (var item in group.Items)
if (item.DataContext == viewModel)
item.IsChecked = true;
}
}
}