The standard way to achieve this in MVVM is actually very straightforward. All you need to do is add a boolean property to your ViewModel that you bind the IsOpen property to on your Popup. When you raise the change notification, the Popup should react appropriately (as long as you haven't changed the default update trigger). Here's what you need to add to your ViewModel (assuming that your VM uses RaisePropertyChanged as the method name for property notification):
private bool _isOpen;
public bool IsOpen
{
get { return _isOpen; }
set
{
if (_isOpen == value) return;
_isOpen = value;
RaisePropertyChanged("IsOpen");
}
}
In your Popup declaration in the XAML, add the following attribute
IsOpen="{Binding IsOpen}"
And that's it - an MVVM friendly way to show the popup.