在子用户控件中使用按钮关闭弹出窗口
Closing popup with button in child usercontrol
我正在处理一个带有子用户控件的弹出窗口。这是在 UWP 的 XAML 文件中使用 Visual Studio 2015 完成的。
在我的用户控件中有一个按钮,我想用它关闭育儿弹出窗口。我似乎无法做到这一点——我尝试了几种选择,最接近的是使用中继命令。应该提到的是弹出窗口按预期弹出。
这是 popup with usercontrol child. 没有名称空间问题,因为弹出窗口正在运行。
这是 button in the usercontrol.
我的方法应该是什么?我正在为此使用 ViewModels(MVVM 设计),并且两个用户控件都可以访问 ViewModel class.
的相同实例
干杯!
看看 https://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.popup.isopen(v=vs.110).aspx 。您将 Popup.IsOpen 绑定到视图模型中的 属性 ...按钮将 属性 设置为 false。
<Popup IsOpen="{Binding ViewModel.IsOpen}" >
...
</Popup>
在 ViewModel 中定义一个命令,您可以将其附加到 AddCriteria 按钮:
private ICommand _AddCriteriaCommand;
public ICommand AddCriteriaCommand
{
get
{
return _AddCriteriaCommand;
}
set
{
_AddCriteriaCommand = value;
}
}
并且您在构造函数中启动此命令或将 AddCriteriaCommand 的 getter 启动到 RelayCommand... 这样
public VMConstructor(...)
{
_AddCriteriaCommand = new RelayCommand(execute => ClosePopup(), canExecute => true);
}
private void ClosePopup()
{
_IsOpen = false;
}
在您的 xaml 中将命令分配给 AddCriteria 按钮,例如
<local:AddCrteria Command="{Binding AddCriteriaCommand}" />
对于弹出窗口,您只需为其创建一个 属性 并带有更改通知:
private bool _isOpen;
public bool IsOpen
{
get { return _isOpen; }
set
{
if (_isOpen == value) return;
_isOpen = value;
RaisePropertyChanged("IsOpen");
}
}
最后将 Popup 控件的 IsOpen 属性 绑定到 ViewModel 的 IsOpen:
IsOpen="{Binding IsOpen}"
应该就是这样了……祝你好运。
我正在处理一个带有子用户控件的弹出窗口。这是在 UWP 的 XAML 文件中使用 Visual Studio 2015 完成的。
在我的用户控件中有一个按钮,我想用它关闭育儿弹出窗口。我似乎无法做到这一点——我尝试了几种选择,最接近的是使用中继命令。应该提到的是弹出窗口按预期弹出。
这是 popup with usercontrol child. 没有名称空间问题,因为弹出窗口正在运行。
这是 button in the usercontrol.
我的方法应该是什么?我正在为此使用 ViewModels(MVVM 设计),并且两个用户控件都可以访问 ViewModel class.
的相同实例干杯!
看看 https://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.popup.isopen(v=vs.110).aspx 。您将 Popup.IsOpen 绑定到视图模型中的 属性 ...按钮将 属性 设置为 false。
<Popup IsOpen="{Binding ViewModel.IsOpen}" >
...
</Popup>
在 ViewModel 中定义一个命令,您可以将其附加到 AddCriteria 按钮:
private ICommand _AddCriteriaCommand;
public ICommand AddCriteriaCommand
{
get
{
return _AddCriteriaCommand;
}
set
{
_AddCriteriaCommand = value;
}
}
并且您在构造函数中启动此命令或将 AddCriteriaCommand 的 getter 启动到 RelayCommand... 这样
public VMConstructor(...)
{
_AddCriteriaCommand = new RelayCommand(execute => ClosePopup(), canExecute => true);
}
private void ClosePopup()
{
_IsOpen = false;
}
在您的 xaml 中将命令分配给 AddCriteria 按钮,例如
<local:AddCrteria Command="{Binding AddCriteriaCommand}" />
对于弹出窗口,您只需为其创建一个 属性 并带有更改通知:
private bool _isOpen;
public bool IsOpen
{
get { return _isOpen; }
set
{
if (_isOpen == value) return;
_isOpen = value;
RaisePropertyChanged("IsOpen");
}
}
最后将 Popup 控件的 IsOpen 属性 绑定到 ViewModel 的 IsOpen:
IsOpen="{Binding IsOpen}"
应该就是这样了……祝你好运。