Our What's New in v24.2 webpage includes product-specific surveys. Your response to our survey questions will help us measure product satisfaction for features released in this major update and help us refine our plans for our next major release.
#How to use MessageBoxService in ViewModels derived from the ViewModelBase class
This example demonstrates how to use the DXMessageBoxService in View Models derived from the ViewModelBase class. The View Models are related to each other by the parent-child relationship with the ISupportParentViewModel interface.
<UserControlx:Class="Example.View.ChildView"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:ViewModel="clr-namespace:Example.ViewModel"xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"mc:Ignorable="d"d:DesignHeight="300"d:DesignWidth="300"><UserControl.DataContext><ViewModel:ChildViewModel/></UserControl.DataContext><Grid><ButtonContent="ChildView: Show Message"Command="{Binding ShowMessageCommand}"/></Grid></UserControl>
usingDevExpress.Mvvm;
usingSystem.Windows.Input;
namespaceExample.ViewModel {
publicclassMainViewModel : ViewModelBase {
public ICommand ShowMessageCommand { get; privateset; }
IMessageBoxService MessageBoxService { get { return GetService<IMessageBoxService>(); } }
publicMainViewModel() {
ShowMessageCommand = new DelegateCommand(ShowMessage);
}
voidShowMessage() {
MessageBoxService.Show("This is MainView!");
}
}
}
ImportsDevExpress.MvvmImportsSystem.Windows.InputNamespace Example.ViewModel
PublicClass ChildViewModel
Inherits ViewModelBase
Private privateShowMessageCommand As ICommand
PublicProperty ShowMessageCommand() As ICommand
GetReturn privateShowMessageCommand
EndGetPrivateSet(ByVal value As ICommand)
privateShowMessageCommand = value
EndSetEndPropertyPublicSubNew()
ShowMessageCommand = New DelegateCommand(AddressOf ShowMessage)
EndSubPrivateReadOnlyProperty MessageBoxService() As IMessageBoxService
GetReturn GetService(Of IMessageBoxService)(ServiceSearchMode.PreferParents)
EndGetEndPropertyPrivateSub ShowMessage()
MessageBoxService.Show("This is ChildView")
EndSubEndClassEndNamespace
ImportsDevExpress.MvvmImportsSystem.Windows.InputNamespace Example.ViewModel
PublicClass MainViewModel
Inherits ViewModelBase
Private privateShowMessageCommand As ICommand
PublicProperty ShowMessageCommand() As ICommand
GetReturn privateShowMessageCommand
EndGetPrivateSet(ByVal value As ICommand)
privateShowMessageCommand = value
EndSetEndPropertyPrivateReadOnlyProperty MessageBoxService() As IMessageBoxService
GetReturn GetService(Of IMessageBoxService)()
EndGetEndPropertyPublicSubNew()
ShowMessageCommand = New DelegateCommand(AddressOf ShowMessage)
EndSubPrivateSub ShowMessage()
MessageBoxService.Show("This is MainView!")
EndSubEndClassEndNamespace
This example demonstrates how to use the DXMessageBoxService in POCO View Models. The View Models are related to each other by the parent-child relationship with the ISupportParentViewModel interface.
<UserControlx:Class="Example.View.ChildView"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:ViewModel="clr-namespace:Example.ViewModel"xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"mc:Ignorable="d"d:DesignHeight="300"d:DesignWidth="300"DataContext="{dxmvvm:ViewModelSource ViewModel:ChildViewModel}"><Grid><ButtonContent="ChildView: Show Message"Command="{Binding ShowMessageCommand}"/></Grid></UserControl>
ImportsDevExpress.MvvmImportsSystem.Windows.InputNamespace Example.ViewModel
PublicClass MainViewModel
ProtectedOverridableReadOnlyProperty MessageBoxService() As IMessageBoxService
GetReturnNothingEndGetEndPropertyPublicSub ShowMessage()
MessageBoxService.Show("This is MainView!")
EndSubEndClassEndNamespace
ImportsDevExpress.MvvmImportsDevExpress.Mvvm.DataAnnotationsNamespace Example.ViewModel
PublicClass ChildViewModel
<ServiceProperty(SearchMode:=ServiceSearchMode.PreferParents)> _
ProtectedOverridableReadOnlyProperty MessageBoxService() As IMessageBoxService
GetReturnNothingEndGetEndPropertyPublicSub ShowMessage()
MessageBoxService.Show("This is ChildView")
EndSubEndClassEndNamespace
#How to use MessageBoxService in a custom View Model
This example demonstrates how to use the DXMessageBoxService in a custom View Model (not derived from the ViewModelBase class and not a POCO View Model).
Refer to the Services in custom ViewModels topic for more information on how to use the Service mechanism in a custom View Model.
Custom View Models in this example are related to each other with the parent-child relationship. This is achieved by supporting the ISupportParentViewModel interface in the View Models.
ImportsDevExpress.MvvmImportsSystem.Windows.InputNamespace Example.ViewModel
PublicClass ChildViewModel
Implements ISupportServices, ISupportParentViewModel
Private serviceContainer_Renamed As IServiceContainer = NothingProtectedReadOnlyProperty ServiceContainer() As IServiceContainer
GetIf serviceContainer_Renamed IsNothingThen
serviceContainer_Renamed = New ServiceContainer(Me)
EndIfReturn serviceContainer_Renamed
EndGetEndPropertyPrivateReadOnlyProperty ISupportServices_ServiceContainer() As IServiceContainer Implements ISupportServices.ServiceContainer
GetReturn ServiceContainer
EndGetEndPropertyPrivateProperty ISupportParentViewModel_ParentViewModel() AsObjectImplements ISupportParentViewModel.ParentViewModel
PrivateReadOnlyProperty MessageBoxService() As IMessageBoxService
GetReturn ServiceContainer.GetService(Of IMessageBoxService)(ServiceSearchMode.PreferParents)
EndGetEndPropertyPrivate privateShowMessageCommand As ICommand
PublicProperty ShowMessageCommand() As ICommand
GetReturn privateShowMessageCommand
EndGetPrivateSet(ByVal value As ICommand)
privateShowMessageCommand = value
EndSetEndPropertyPublicSubNew()
ShowMessageCommand = New DelegateCommand(AddressOf ShowMessage)
EndSubPrivateSub ShowMessage()
MessageBoxService.Show("This is ChildView")
EndSubEndClassEndNamespace
ImportsDevExpress.MvvmImportsSystem.Windows.InputNamespace Example.ViewModel
PublicClass MainViewModel
Implements ISupportServices
Private serviceContainer_Renamed As IServiceContainer = NothingProtectedReadOnlyProperty ServiceContainer() As IServiceContainer
GetIf serviceContainer_Renamed IsNothingThen
serviceContainer_Renamed = New ServiceContainer(Me)
EndIfReturn serviceContainer_Renamed
EndGetEndPropertyPrivateReadOnlyProperty ISupportServices_ServiceContainer() As IServiceContainer Implements ISupportServices.ServiceContainer
GetReturn ServiceContainer
EndGetEndPropertyPrivateReadOnlyProperty MessageBoxService() As IMessageBoxService
GetReturn ServiceContainer.GetService(Of IMessageBoxService)()
EndGetEndPropertyPrivate privateShowMessageCommand As ICommand
PublicProperty ShowMessageCommand() As ICommand
GetReturn privateShowMessageCommand
EndGetPrivateSet(ByVal value As ICommand)
privateShowMessageCommand = value
EndSetEndPropertyPublicSubNew()
ShowMessageCommand = New DelegateCommand(AddressOf ShowMessage)
EndSubPrivateSub ShowMessage()
MessageBoxService.Show("This is MainView!")
EndSubEndClassEndNamespace
<UserControlx:Class="Example.View.ChildView"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:ViewModel="clr-namespace:Example.ViewModel"xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"mc:Ignorable="d"d:DesignHeight="300"d:DesignWidth="300"><UserControl.DataContext><ViewModel:ChildViewModel/></UserControl.DataContext><Grid><ButtonContent="ChildView: Show Message"Command="{Binding ShowMessageCommand}"/></Grid></UserControl>
If you have any questions, submit a ticket to our Support Center.
No
Your feedback is appreciated.
By clicking “Accept All Cookies”, you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts.
Privacy Preference Center
When you visit a Developer Express Inc (“DevExpress”) website, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences or your device and is mostly used to make the site work as you expect it to. While the information does not usually directly identify you, it can give you a more personalized web experience. Because DevExpress respects your right to privacy, you can choose to disallow/disable the use of certain cookies. Click on different category headings to learn more and change our default settings. Keep in mind that blocking some types of cookies may impact your experience on the site and may affect the services DevExpress is able to offer to you. You cannot opt-out of our use of strictly necessary cookies as they are used to ensure the proper functioning of our Websites (such as remembering your settings, allowing you to log into your account, and other similar purposes). You may, however, opt-out of receiving and our use of non-essential cookies (including preference, functional, and targeting cookies) by changing your settings for each category listed below.
[Videos]
Our use of cookies may also collect information about what videos you have watched on our websites. You may opt-out of these cookies by changing your settings for functional and advertising cookies. We will ask you to review and update your choices at least once every two (2) years. By continuing to allow us to use these cookies you explicitly consent to our use of cookies and our disclosure of what videos you have watched on our Websites to our video hosting providers, such as YouTube, for a period of up to two (2) years.
Manage Consent Preferences
Strictly Necessary Cookies
Always Active
These cookies are necessary for the website to function properly and cannot be disabled. They are usually set in response to actions initiated by you – actions that amount to a request for services, such as setting your privacy preferences, logging onto the website, or populating website forms. You can set your browser to block or alert you about these cookies, but certain portions of the site will not work properly when these cookies are disabled. These cookies do not store any personally identifiable information.
Performance Cookies
These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our site. They help us understand page popularity and determine how visitors move around the site. All information collected by these cookies are aggregated and therefore anonymous. If you disallow/disable these cookies, we will not know when you have visited our site and we will not be able to monitor its performance.
Functional Cookies
These cookies allow the website to provide enhanced functionality and personalization. They may be set by us or by third party providers whose services we have added to our pages. If you disallow/disable these cookies, some or all of these services may fail to function properly.
Targeting Cookies
These cookies may be set through our site by our advertising partners. They may be used by advertising partners to build a profile of your interests and display relevant advertisements on other sites. While these cookies do not store personal information, they do identify your browser and internet device. If you disallow/disable these cookies, you will experience less targeted advertising.