如何在wpf中使用mvvm模式打开用户控件(而不是主窗口)上的模式弹出窗口?Modal Popup在WPF中的用户控件中
我希望我的问题对所有人都清楚,因为我想在用户控件上打开弹出窗口而不是在窗口上。
如何在wpf中使用mvvm模式打开用户控件(而不是主窗口)上的模式弹出窗口?Modal Popup在WPF中的用户控件中
我希望我的问题对所有人都清楚,因为我想在用户控件上打开弹出窗口而不是在窗口上。
模态是为新窗口而不是usercontrols。用户控件只是页面或窗口内的控件。
因此,如果你想使它成为模态,那么使用户控件覆盖整个窗口区域,并且只有当它完成了它的内容后才能关闭它。如果你愿意的话,甚至可以使它部分透明,所以它看起来像一个弹出窗口。
我不知道这是你所期望的。打开模型从WPF为从打开一个在正常的窗口的应用,因为相同的弹出
**ModalWin objWin = new ModalWin();
objWin.ShowDialog();**
问候 SREE
模态通常是指模态到应用程序,或在弹出的情况下,对于窗口。不用于特定的控制。
如果你想同时显示一个弹出来禁用特定的控制,你可以在一个触发器这样做:
<Popup x:Name="popup">
<!-- ... -->
</Popup>
<UserControl>
<UserControl.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding IsOpen, ElementName=popup}"
Value="True">
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</UserControl.Style>
<UserControl>
这实际上是一个相当复杂的话题。
#2有很多关于MVVM对话框信息的,因为使用的解决方案,如SREE的休息MVVM
这里是一个好去处,也开始 Handling Dialogs in WPF with MVVM
,在用户控件或主窗口打开一个弹出将是一样的。
使用装饰者。
public class OpaqueAdorner : Adorner
{
public OpaqueAdorner(UIElement win)
: base(win)
{ }
protected override void OnRender(System.Windows.Media.DrawingContext drawingContext)
{
SolidColorBrush renderBrush = new SolidColorBrush(Colors.LightCoral);
renderBrush.Opacity = 0.3;
Pen renderPen = new Pen(new SolidColorBrush(Colors.DarkBlue), 5.0);
drawingContext.DrawRectangle(renderBrush, renderPen,
new Rect(new Point(0, 0), AdornedElement.DesiredSize));
}
}
/*硕士生是容器电网*/
private void Btn_Click(object sender, RoutedEventArgs e)
{
//GetAdornerLayer was missing ')'
AdornerLayer.GetAdornerLayer(Grd).Add(new OpaqueAdorner(Grd));
}
结合这个概念与Opened/Closed
事件的Popup
。
我知道这是一个古老的问题,但是当我做了这个搜索,我发现了很多相关的问题,但是我没有找到真正明确的答案。所以我自己实现一个dialogbox/messagebox/popin,并且我分享它!
https://stackoverflow.com/a/40135791/2546739
是表示这样的事情:
这不是MVVM,作为OP问。 –