Mini Kabibi Habibi

Current Path : C:/Users/Public/Documents/DXperience 13.1 Demos/WPF/VB/RibbonDemo.Wpf/Controls/
Upload File :
Current File : C:/Users/Public/Documents/DXperience 13.1 Demos/WPF/VB/RibbonDemo.Wpf/Controls/DemoModuleControl.vb

Imports Microsoft.VisualBasic
Imports System
Imports System.Windows
Imports DevExpress.Xpf.Bars
Imports DevExpress.Xpf.Core.Native
Imports DevExpress.Xpf.DemoBase
Imports DevExpress.Xpf.Utils
Imports DevExpress.Xpf.Ribbon
Imports System.Windows.Media
Imports DevExpress.Xpf.Core


Namespace RibbonDemo
	Public Class RibbonDemoModule
		Inherits DemoModule
		Public Shared ReadOnly BarManagerProperty As DependencyProperty
		Public Shared ReadOnly RibbonProperty As DependencyProperty
		Public Shared ReadOnly ForegroundInfoProperty As DependencyProperty

		Shared Sub New()
			Dim ownerType As Type = GetType(RibbonDemoModule)
			BarManagerProperty = DependencyPropertyManager.Register("BarManager", GetType(BarManager), ownerType, New FrameworkPropertyMetadata(Nothing))
			RibbonProperty = DependencyPropertyManager.Register("Ribbon", GetType(RibbonControl), ownerType, New FrameworkPropertyMetadata(Nothing))
			ForegroundInfoProperty = DependencyPropertyManager.Register("ForegroundInfo", GetType(ForegroundInfo), ownerType, New FrameworkPropertyMetadata(Nothing))
		End Sub
		Public Property Manager() As BarManager
			Get
				Return CType(GetValue(BarManagerProperty), BarManager)
			End Get
			Set(ByVal value As BarManager)
				SetValue(BarManagerProperty, value)
			End Set
		End Property
		Public Property Ribbon() As RibbonControl
			Get
				Return CType(GetValue(RibbonProperty), RibbonControl)
			End Get
			Set(ByVal value As RibbonControl)
				SetValue(RibbonProperty, value)
			End Set
		End Property
		Public Property ForegroundInfo() As ForegroundInfo
			Get
				Return CType(GetValue(ForegroundInfoProperty), ForegroundInfo)
			End Get
			Set(ByVal value As ForegroundInfo)
				SetValue(ForegroundInfoProperty, value)
			End Set
		End Property

		Public Sub New()
			ForegroundInfo = New RibbonDemo.ForegroundInfo()
			AddHandler Loaded, AddressOf OnLoaded
			AddHandler Unloaded, AddressOf OnUnloaded
		End Sub

		Protected Overridable ReadOnly Property NeedChangeEditorsTheme() As Boolean
			Get
				Return False
			End Get
		End Property
		Protected Overridable Sub OnLoaded(ByVal sender As Object, ByVal e As RoutedEventArgs)
			Manager = CType(DemoModuleControl.FindDemoContent(GetType(BarManager), Me), BarManager)
			Ribbon = CType(DemoModuleControl.FindDemoContent(GetType(RibbonControl), Me), RibbonControl)
			ForegroundInfo.OnModuleLoaded()
			DemoModuleControl.DemoContent = Manager
		End Sub
		Protected Overridable Sub OnUnloaded(ByVal sender As Object, ByVal e As RoutedEventArgs)
			ForegroundInfo.OnModuleUnoaded()
		End Sub
		Protected Overrides Function CanLeave() As Boolean
			Return True
		End Function
		Protected Overrides Sub RaiseIsPopupContentInvisibleChanged(ByVal e As DependencyPropertyChangedEventArgs)
			MyBase.RaiseIsPopupContentInvisibleChanged(e)
			Dim newValue As Boolean = CBool(e.NewValue)
			If Ribbon IsNot Nothing Then
				Ribbon.AllowKeyTips = Not newValue
			End If
		End Sub
	End Class
	Public Class ForegroundInfo
		Inherits DependencyObject
		Public Shared ReadOnly HoverForegroundProperty As DependencyProperty
		Public Shared ReadOnly NormalForegroundProperty As DependencyProperty

		Shared Sub New()
			HoverForegroundProperty = DependencyPropertyManager.Register("HoverForeground", GetType(SolidColorBrush), GetType(ForegroundInfo), New FrameworkPropertyMetadata(Nothing))
			NormalForegroundProperty = DependencyPropertyManager.Register("NormalForeground", GetType(SolidColorBrush), GetType(ForegroundInfo), New FrameworkPropertyMetadata(Nothing))
		End Sub

		Public Property NormalForeground() As SolidColorBrush
			Get
				Return CType(GetValue(NormalForegroundProperty), SolidColorBrush)
			End Get
			Set(ByVal value As SolidColorBrush)
				SetValue(NormalForegroundProperty, value)
			End Set
		End Property
		Public Property HoverForeground() As SolidColorBrush
			Get
				Return CType(GetValue(HoverForegroundProperty), SolidColorBrush)
			End Get
			Set(ByVal value As SolidColorBrush)
				SetValue(HoverForegroundProperty, value)
			End Set
		End Property

		Public Sub OnModuleLoaded()
			AddHandler ThemeManager.ThemeChanged, AddressOf OnThemeChanged

			OnThemeChanged(Nothing, Nothing)
		End Sub
		Public Sub OnModuleUnoaded()
			RemoveHandler ThemeManager.ThemeChanged, AddressOf OnThemeChanged
			OnThemeChanged(Nothing, Nothing)
		End Sub

		Private Sub OnThemeChanged(ByVal sender As DependencyObject, ByVal e As ThemeChangedRoutedEventArgs)
			If IsDarkBackstageBackground() Then
				NormalForeground = New System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.White)
				HoverForeground = New System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Black)
			Else
				NormalForeground = New System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Black)
				HoverForeground = New System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Black)
			End If
		End Sub

		Private Function IsDarkBackstageBackground() As Boolean
			Return ThemeManager.ApplicationThemeName = "MetropolisDark"
		End Function
	End Class
	Public Class ForegroundInfoWrapper
		Inherits System.Windows.Controls.ContentControl
		Public Shared ReadOnly ForegroundInfoProperty As DependencyProperty
		Public Shared ReadOnly ActualForegroundProperty As DependencyProperty
		Shared Sub New()
			ForegroundInfoProperty = DependencyPropertyManager.Register("ForegroundInfo", GetType(ForegroundInfo), GetType(ForegroundInfoWrapper), New FrameworkPropertyMetadata(Nothing))
			ActualForegroundProperty = DependencyPropertyManager.Register("ActualForeground", GetType(SolidColorBrush), GetType(ForegroundInfoWrapper), New FrameworkPropertyMetadata(Nothing))
		End Sub
		Public Sub New()
			SetBinding(ActualForegroundProperty, New System.Windows.Data.Binding("ForegroundInfo.NormalForeground") With {.RelativeSource = New System.Windows.Data.RelativeSource(System.Windows.Data.RelativeSourceMode.Self)})
			SetBinding(ForegroundProperty, New System.Windows.Data.Binding("ActualForeground") With {.RelativeSource = New System.Windows.Data.RelativeSource(System.Windows.Data.RelativeSourceMode.Self)})
		End Sub

		Public Property ActualForeground() As SolidColorBrush
			Get
				Return CType(GetValue(ActualForegroundProperty), SolidColorBrush)
			End Get
			Set(ByVal value As SolidColorBrush)
				SetValue(ActualForegroundProperty, value)
			End Set
		End Property
		Public Property ForegroundInfo() As ForegroundInfo
			Get
				Return CType(GetValue(ForegroundInfoProperty), ForegroundInfo)
			End Get
			Set(ByVal value As ForegroundInfo)
				SetValue(ForegroundInfoProperty, value)
			End Set
		End Property

		Protected Overrides Sub OnMouseEnter(ByVal e As System.Windows.Input.MouseEventArgs)
			MyBase.OnMouseEnter(e)
			SetBinding(ActualForegroundProperty, New System.Windows.Data.Binding("ForegroundInfo.HoverForeground") With {.RelativeSource = New System.Windows.Data.RelativeSource(System.Windows.Data.RelativeSourceMode.Self)})
		End Sub
		Protected Overrides Sub OnMouseLeave(ByVal e As System.Windows.Input.MouseEventArgs)
			MyBase.OnMouseLeave(e)
			SetBinding(ActualForegroundProperty, New System.Windows.Data.Binding("ForegroundInfo.NormalForeground") With {.RelativeSource = New System.Windows.Data.RelativeSource(System.Windows.Data.RelativeSourceMode.Self)})
		End Sub
		Protected Overrides Sub OnMouseMove(ByVal e As System.Windows.Input.MouseEventArgs)
			MyBase.OnMouseMove(e)
			SetBinding(ActualForegroundProperty, New System.Windows.Data.Binding("ForegroundInfo.HoverForeground") With {.RelativeSource = New System.Windows.Data.RelativeSource(System.Windows.Data.RelativeSourceMode.Self)})
		End Sub
	End Class
End Namespace