我正在尝试在页面上显示弹出窗口。所需的行为是将页面放在后台,弹出窗口将显示在该页面上。显示弹出窗口时,我仍然可以与后台页面进行交互。但我需要禁用后台页面。
<Grid>
<Grid>
<Pivot IsEnabled="{Binding IsPopUpOpen , Converter={StaticResource BooleanInversionConverter}}">
</Pivot>
</Grid>
<Popup Name="Popup" IsOpen="{Binding IsPopUpOpen}" VerticalAlignment="Center">
<TextBox Foreground="Black" FontSize="28" FontWeight="Normal" BorderBrush="Black" BorderThickness="2" HorizontalAlignment="Left" Width="440"/>
</Popup>
</Grid>
当我运行此代码时,我得到一个例外:
System.InvalidOperationException未处理消息:未处理 发生了'System.InvalidOperationException'类型的异常 System.Windows.ni.dll其他信息:无法解析 TargetName Img。
让我知道如何使用MVVM方法禁用数据透视。
答案 0 :(得分:0)
Juste将弹出窗口置于所有其他控件之上。 例:
<grid>
<yourxaml>
</grid>
<popup horizontalAlignement="Stretch" verticalignementAlignement="Stretch"></popup>
此处,用户无法与应用程序的其他部分进行交互,因为您的控件弹出窗口优先于其他部分。
答案 1 :(得分:0)
您应该能够订阅Opened和Closed事件来获取窗口并禁用窗口本身。我有一个子类,所以我选择重写,因为我想要一个可拖动的Popup。下面对我有用。
protected override void OnOpened(EventArgs e)
{
base.OnOpened(e);
var parentWindow = Window.GetWindow(this);
parentWindow.IsEnabled = false;
}
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
var parentWindow = Window.GetWindow(this);
parentWindow.IsEnabled = true;
}