2

我正在开发一个 .net core 3 wpf Prism 应用程序,我想知道如何使用 Prism 7.2 中的新 IDIAlogAware 界面使主窗口在模式对话框显示时变灰。我正在寻找类似 Prism xamarin.forms 中的属性 DialogLayout.MaskStyle 的东西?

4

1 回答 1

1

在主窗口的最上方放置一个“雾”控件,默认情况下是隐藏的。将其可见性绑定到外壳视图模型上的属性。创建此属性重定向到的服务。也将服务注入到模态对话框的视图模型中。使用它来激活雾OnDialogOpened和从 停用它OnDialogClosed

编辑:“重定向”部分的一些示例代码......

public interface IFogController : INotifyPropertyChanged
{
    bool IsFogVisible { get; set; }
}

internal class ShellViewModel : BindableBase
{
    public ShellViewModel( IFogController fogController )
    {
        _fogController = fogController;
        PropertyChangedEventManager.AddHandler( fogController, ( sender, args ) => RaisePropertyChanged( nameof(IsFogVisible) ), nameof( IFogController.IsFogVisible ) );
    }

    public bool IsFogVisible
    {
        get => _fogController.IsFogVisible;
        set => _fogController.IsFogVisible = value;
    }

    private readonly IFogController _fogController;
}

internal class FogController : BindableBase, IFogController
{
    public bool IsFogVisible
    {
        get => _isFogVisible;
        set => SetProperty( ref _isFogVisible, value );
    }

    private bool _isFogVisible;
}
于 2019-11-24T11:29:09.233 回答