This repository has been archived by the owner on Dec 21, 2023. It is now read-only.
/
GalleryHelper.vb
53 lines (47 loc) · 2.02 KB
/
GalleryHelper.vb
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
42
43
44
45
46
47
48
49
50
51
52
53
Imports System.Windows
Imports DevExpress.Xpf.Bars
Imports DevExpress.Mvvm.UI.Interactivity
Namespace DXSample
Public Class GalleryHelper
Inherits Behavior(Of Gallery)
Public Shared ReadOnly SelectedItemProperty As DependencyProperty = DependencyProperty.Register("SelectedItem", GetType(Object), GetType(GalleryHelper), New PropertyMetadata(Nothing, AddressOf OnSelectedItemPropertyChanged))
Private Shared Sub OnSelectedItemPropertyChanged(ByVal d As DependencyObject, ByVal e As DependencyPropertyChangedEventArgs)
CType(d, GalleryHelper).OnSelectedItemChanged(e)
End Sub
Public ReadOnly Property Gallery() As Gallery
Get
Return AssociatedObject
End Get
End Property
Public Property SelectedItem() As Object
Get
Return DirectCast(GetValue(SelectedItemProperty), Object)
End Get
Set(ByVal value As Object)
SetValue(SelectedItemProperty, value)
End Set
End Property
Protected Overrides Sub OnAttached()
MyBase.OnAttached()
AddHandler AssociatedObject.ItemChecked, AddressOf AssociatedObject_ItemChecked
End Sub
Private Sub AssociatedObject_ItemChecked(ByVal sender As Object, ByVal e As GalleryItemEventArgs)
UpdateSelectedItem(e.Item)
End Sub
Private Sub OnSelectedItemChanged(ByVal e As DependencyPropertyChangedEventArgs)
CheckItem(SelectedItem)
End Sub
Private Sub UpdateSelectedItem(ByVal galleryItem As GalleryItem)
SelectedItem = galleryItem.DataContext
End Sub
Private Sub CheckItem(ByVal viewModel As Object)
For Each group In Gallery.Groups
For Each item In group.Items
If item.DataContext Is viewModel Then
item.IsChecked = True
End If
Next item
Next group
End Sub
End Class
End Namespace