TECHNOLOGIES
FORUMS
JOBS
BOOKS
EVENTS
INTERVIEWS
Live
MORE
LEARN
Training
CAREER
MEMBERS
VIDEOS
NEWS
BLOGS
Sign Up
Login
No unread comment.
View All Comments
No unread message.
View All Messages
No unread notification.
View All Notifications
Answers
Post
An Article
A Blog
A News
A Video
An EBook
An Interview Question
Ask Question
Forums
Monthly Leaders
Forum guidelines
Manoharan
NA
280
13.8k
How to close PopUp window in wpf using mvvm?
Sep 17 2014 2:47 AM
Hi,
I created to 2 usercontrol for parent,child and one mainwindow. I refer the child window inside the popup control of parent window.In parent window i try to click the button popup window display.
Now i want close the popup window,when i try the click the childwindow submit button.Please help me.
MainWindow.xaml:
<Window x:Class="parentchild.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:my="clr-namespace:WpfLab.Controls;assembly=WpfLab.Controls"
xmlns:local="clr-namespace:parentchild.View"
Title="MainWindow" Height="768" Width="1280">
<Grid>
<local:ParentView></local:ParentView>
</Grid>
</Window>
ParentView.xaml:
<UserControl x:Class="parentchild.View.ParentView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:controls="clr-namespace:parentchild.View"
xmlns:vm="clr-namespace:parentchild.ViewModel"
mc:Ignorable="d"
d:DesignHeight="768" d:DesignWidth="1280">
<Grid x:Name="LayoutRoot" Width="1280" Height="768" Background="#2f3033">
<Grid.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVis" />
</Grid.Resources>
<Canvas Margin="0.08,0.33,-0.081,0" VerticalAlignment="Top" Width="1280" Height="59" Visibility="{Binding canvasPlayerMain}" >
<Button Width="144" Height="44" Content="Submit" Canvas.Left="14" Canvas.Top="8" BorderBrush="#FF496E00" Foreground="Black" Command="{Binding submitCommand}">
</Button>
<StackPanel>
<Popup x:Name="popup" Width="100" Height="100" AllowsTransparency="True" IsOpen="{Binding IsPopupIsOpen}" Visibility="{Binding popupVisibility}">
<Grid Background="Transparent">
<controls:ChildView></controls:ChildView>
</Grid>
</Popup>
</StackPanel>
</Canvas>
</Grid>
</UserControl>
ParentView.xaml.cs:
public partial class ParentView : UserControl
{
public RumView()
{
InitializeComponent();
this.DataContext = new ParentViewModel();
}
}
}
ParentViewModel.cs:
public class ParentViewModel : INotifyPropertyChanged
{
private readonly IEventAggregator eventAggregator=new EventAggregator();
private ParentModel currenparentModel;
private string resultMessage;
private bool _popupIsOpen;
public RumViewModel()
{
currenrumModel = new RumModel();
this.submitCommand = new DelegateCommand<object>(this.Execute, this.CanExecute);
}
public bool IsPopupIsOpen
{
get { return _popupIsOpen; }
set
{
_popupIsOpen = value;
NotifyPropertyChanged("IsPopupIsOpen");
}
}
public ParentModel currentparent
{
get
{
return currenparentModel
}
set
{
currenparentModel= value;
}
}
public Visibility popupVisibility
{
get { return this.currenrumModel.popupVisibility; }
set
{
this.currenrumModel.popupVisibility = value;
this.NotifyPropertyChanged("popupVisibility");
}
}
#region commands
public ICommand submitCommand { get; private set; }
#endregion
private bool CanExecute(object arg)
{
return true;
}
private void Execute(object arg)
{
popupVisibility = Visibility.Visible;
IsPopupIsOpen = true;
}
private void RaiseCanExecuteChanged()
{
DelegateCommand<object> tosscommand = tosscardCommand as DelegateCommand<object>;
cancelcommand.RaiseCanExecuteChanged();
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
#endregion
}
ChildWindowView.xaml:
<UserControl x:Class="parentchild.View.ChildWindowView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:viewModels="clr-namespace:parentchild.ViewModel"
xmlns:views="clr-namespace:parentchild.View"
mc:Ignorable="d"
d:DesignHeight="500" d:DesignWidth="500">
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="165,106,0,0" TextWrapping="Wrap" Text="Reschedule Timer" VerticalAlignment="Top" FontSize="21.333" Foreground="White" Width="174" Height="28"/>
<TextBlock HorizontalAlignment="Left" Margin="37,199,0,0" TextWrapping="Wrap" Text="Set The Timer" VerticalAlignment="Top" FontSize="21.333" Foreground="White" Width="174" Height="28"/>
<TextBox HorizontalAlignment="Left" Margin="252,199,0,0" TextWrapping="Wrap" Text="{Binding Path=setTimer}" VerticalAlignment="Top" Width="206" Height="38" />
<Button Content="Submit" HorizontalAlignment="Left" Margin="252,278,0,0" VerticalAlignment="Top" Foreground="White" Width="122" Height="39" Background="Green" Command="{Binding SubmitCommand}"/>
</Grid>
</UserControl>
ChildWindowView.xaml.cs:
public partial class ChildWindowView : UserControl
{
public ChildWindowView()
{
InitializeComponent();
this.DataContext = new ChildWindowViewModel();
}
}
ChildWindowViewModel.cs:
public class ChildWindowViewModel : INotifyPropertyChanged
{
private ChildWindowModel currentChildWindow;
private readonly IEventAggregator eventAggregator = new EventAggregator();
public ChildWindowViewModel()
{
currentChildWindow = new ChildWindowModel();
this.SubmitCommand = new DelegateCommand<object>(this.OnSubmit, this.CanSubmit);
}
private void RaiseCanExecuteChanged()
{
DelegateCommand<object> command = SubmitCommand as DelegateCommand<object>;
command.RaiseCanExecuteChanged();
}
public ChildWindowModel currentTimer
{
get
{
return currentTimer;
}
set
{
currentTimer = value;
}
}
public string setTimer
{
get { return this.currentChildWindow.setTimer; }
set
{
if (this.currentChildWindow.setTimer != value)
{
this.currentChildWindow.setTimer = value;
NotifyPropertyChanged("setTimer");
RaiseCanExecuteChanged();
}
}
}
public string errMessage
{
get { return this.currentChildWindow.errMessage; }
set
{
if (this.currentChildWindow.errMessage != value)
{
this.currentChildWindow.errMessage = value;
NotifyPropertyChanged("errMessage");
RaiseCanExecuteChanged();
}
}
}
public ICommand SubmitCommand { get; private set; }
private bool CanSubmit(object arg)
{
return true;
}
private void OnSubmit(object arg)
{
try
{
if (string.IsNullOrEmpty(setTimer))
{
this.errMessage = "Please enter Rescheduler Timer value";
}
}
catch (Exception ex)
{
throw ex;
}
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
#endregion
Reply
Answers (
0
)
WPF Custom datagrid with save functionality
How to close the popup window using mvvm in wpf?