Mini Kabibi Habibi
Imports Microsoft.VisualBasic
Imports System
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Controls.Primitives
Imports DevExpress.Utils
Imports DevExpress.Xpf.Core
Imports DevExpress.Xpf.DemoBase
Imports DevExpress.Xpf.Grid
Imports DevExpress.Xpf.Printing
Imports DevExpress.Xpf.Utils.Themes
Imports DevExpress.Xpf.Editors
Imports DevExpress.Xpf.Core.Native
Imports DevExpress.Xpf.Themes
Namespace GridDemo
Public Class GridDemoModule
Inherits DemoModule
Public Shared ReadOnly GridControlProperty As DependencyProperty
Shared Sub New()
GridControlProperty = DependencyProperty.Register("GridControl", GetType(GridControl), GetType(GridDemoModule), New PropertyMetadata(Nothing))
End Sub
Public Sub New()
End Sub
Protected Overridable ReadOnly Property IsGridBorderVisible() As Boolean
Get
Return False
End Get
End Property
Private privateUseGridControlWrapperAsDataContext As Boolean
Public Property UseGridControlWrapperAsDataContext() As Boolean
Get
Return privateUseGridControlWrapperAsDataContext
End Get
Set(ByVal value As Boolean)
privateUseGridControlWrapperAsDataContext = value
End Set
End Property
Public Property GridControl() As GridControl
Get
Return CType(GetValue(GridControlProperty), GridControl)
End Get
Set(ByVal value As GridControl)
SetValue(GridControlProperty, value)
End Set
End Property
Public Overrides Sub OnApplyTemplate()
MyBase.OnApplyTemplate()
End Sub
Protected Overrides Function GetModuleDataContext() As Object
If GridControl Is Nothing Then
GridControl = FindGrid()
If GridControl IsNot Nothing Then
GridControl.ShowBorder = IsGridBorderVisible
End If
End If
If UseGridControlWrapperAsDataContext Then
Return New GridControlWrapper(GridControl)
End If
Return GridControl
End Function
Protected Overridable Function FindGrid() As GridControl
Return CType(DemoModuleControl.FindDemoContent(GetType(GridControl), CType(DemoModuleControl.Content, DependencyObject)), GridControl)
End Function
Protected Overrides Sub RaiseIsPopupContentInvisibleChanged(ByVal e As DependencyPropertyChangedEventArgs)
MyBase.RaiseIsPopupContentInvisibleChanged(e)
If IsPopupContentInvisible AndAlso GridControl IsNot Nothing Then
GridControl.View.HideColumnChooser()
End If
End Sub
Protected Overrides Function CanLeave() As Boolean
If GridControl Is Nothing Then
Return True
End If
Return GridControl.View.CommitEditing()
End Function
End Class
Public Class GridControlWrapper
Implements System.ComponentModel.INotifyPropertyChanged
Private grid As GridControl
Public Property GridControl() As GridControl
Get
Return grid
End Get
Set(ByVal value As GridControl)
If grid Is value Then
Return
End If
grid = value
OnPropertyChanged("GridControl")
End Set
End Property
Public Sub New(ByVal gridControl As GridControl)
Me.GridControl = gridControl
End Sub
Public Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
Private Sub OnPropertyChanged(ByVal propertyName As String)
If (Me.PropertyChangedEvent IsNot Nothing) Then
RaiseEvent PropertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs(propertyName))
End If
End Sub
End Class
Public Class PrintViewGridDemoModule
Inherits GridDemoModule
Public Shared Function CreateLinkPreviewModel(ByVal printableControl As IPrintableControl) As LinkPreviewModel
Dim link As New PrintableControlLink(TryCast(printableControl, IPrintableControl))
Return New LinkPreviewModel(link)
End Function
Protected Overridable ReadOnly Property DXTabControl() As DXTabControl
Get
Return Nothing
End Get
End Property
Protected Overrides Function FindGrid() As GridControl
Return If(DXTabControl IsNot Nothing, CType((CType(DXTabControl.Items(0), DXTabItem)).Content, GridControl), Nothing)
End Function
Public Sub ShowPrintPreview()
Dim owner As Window = LayoutHelper.FindParentObject(Of Window)(Me)
PrintHelper.ShowPrintPreviewDialog(owner, CType(GridControl.View, IPrintableControl), "Grid Document")
End Sub
Public Sub ShowPrintPreviewInNewTab(ByVal grid As GridControl, ByVal tabControl As DXTabControl, ByVal tabName As String)
Dim preview As New DocumentPreview()
Dim model As LinkPreviewModel = CreateLinkPreviewModel(TryCast(grid.View, IPrintableControl))
preview.Model = model
Dim tabHeaderPrintInfoControl As New TabHeaderPrintInfoControl() With {.TabName = tabName, .LinkPreviewModel = model}
Dim tabItem As New DXTabItem() With {.AllowHide = DefaultBoolean.True, .Content = preview, .Header = tabHeaderPrintInfoControl}
tabControl.Items.Add(tabItem)
tabControl.SelectedItem = tabItem
model.Link.CreateDocument(True)
End Sub
Protected Sub DisposePrintPreviewTabContent(ByVal tabItem As DXTabItem)
DXTabControl.Items.Remove(tabItem)
Dim tabHeaderPrintInfoControl As TabHeaderPrintInfoControl = CType(tabItem.Header, TabHeaderPrintInfoControl)
tabHeaderPrintInfoControl.LinkPreviewModel.Link.Dispose()
End Sub
Protected Overrides Sub Clear()
MyBase.Clear()
For i As Integer = DXTabControl.Items.Count - 1 To 1 Step -1
DisposePrintPreviewTabContent(CType(DXTabControl.Items(i), DXTabItem))
Next i
End Sub
Protected Sub newWindowButton_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
ShowPrintPreview()
End Sub
Protected Overridable Sub ShowPreviewInNewTab()
End Sub
End Class
Public Class CountryToFlagImageConverter
Inherits BytesToImageSourceConverter
Public Overrides Function Convert(ByVal value As Object, ByVal targetType As Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object
For Each item As Country In CountriesData.DataSource
If item.Name = CStr(value) Then
Return MyBase.Convert(item.Flag, targetType, parameter, culture)
End If
Next item
Return Nothing
End Function
End Class
End Namespace
Namespace CommonDemo
Public Class CommonDemoModule
Inherits GridDemo.GridDemoModule
End Class
End Namespace