WPF中用户控件的模式弹出窗口
如何使用mvvm模式在wpf中的用户控件(而不是主窗口)上打开模式弹出窗口WPF中用户控件的模式弹出窗口,wpf,mvvm,user-controls,popup,Wpf,Mvvm,User Controls,Popup,如何使用mvvm模式在wpf中的用户控件(而不是主窗口)上打开模式弹出窗口 我希望我的问题对所有人来说都是清楚的,因为我想在用户控件上而不是在窗口上打开弹出窗口。模式用于新的窗口而不是用户控件。usercontrol只是页面或窗口中的一个控件 因此,如果你想让它成为模态,那么让用户控件覆盖你窗口的整个区域,只有当他们完成了其中的内容后,它才能关闭。如果您愿意的话,甚至可以将其中的一些部分透明,使其看起来像一个弹出窗口。我不知道这是您所期望的。从wpf打开模型弹出窗口与在普通windows应用程序
我希望我的问题对所有人来说都是清楚的,因为我想在用户控件上而不是在窗口上打开弹出窗口。模式用于新的窗口而不是用户控件。usercontrol只是页面或窗口中的一个控件
因此,如果你想让它成为模态,那么让用户控件覆盖你窗口的整个区域,只有当他们完成了其中的内容后,它才能关闭。如果您愿意的话,甚至可以将其中的一些部分透明,使其看起来像一个弹出窗口。我不知道这是您所期望的。从wpf打开模型弹出窗口与在普通windows应用程序中打开模型弹出窗口相同
**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>
这实际上是一个相当复杂的话题。
Stackoverflow有很多关于MVVM中对话框的信息,因为使用Sree之类的解决方案会破坏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));
}
}
/*Grd是容器网格*/
private void Btn_Click(object sender, RoutedEventArgs e)
{
//GetAdornerLayer was missing ')'
AdornerLayer.GetAdornerLayer(Grd).Add(new OpaqueAdorner(Grd));
}
将这个概念与
Opened/Closed
事件Popup
结合起来,我知道这是一个老问题,但是当我搜索时,我发现了很多相关的问题,但我没有找到一个真正清晰的答案。因此,我自己实现了dialogbox/messagebox/popin,并与大家分享它展示了这样的东西:
正如OP所问,这不是MVVM。