C# WPF PRISM - 将多个参数传递给 UserControl

问题描述 投票:0回答:1

我正在为我的 C# WPF 应用程序使用 PRISM 框架。 UserControl 继承自 IDialogAware 接口。我正在尝试做的是将多个参数从 MainWindowViewModel 传递到 UserControlViewModel。但是当我调用 OnDialogOpened 方法时,我试图填充 parameter1,有一个 System.FormatException 因为我从 parameters.GetValue("parameter1") 得到的值是:

“假,参数2=假”

当然,我可以用 substring() 方法解决它,但是没有更好或更好的方法吗?

MainWindowViewModel:

_dialogService.ShowDialog("SecondUserControl", 
        new DialogParameters($"parameter1={parameter1}, parameter2={parameter2}"), r =>
        {});

UserControlViewModel:

public void OnDialogOpened(IDialogParameters parameters)
{
  var parameter1 = parameters.GetValue<bool>("parameter1");
  var parameter2 = parameters.GetValue<bool>("parameter2");
}
c# wpf prism
1个回答
1
投票

DialogParameters
继承了
ParametersBase
,它实现了
IEnumerable<KeyValuePair<string, object>>
并且具有像
Add(string key, object value)
这样的集合的典型方法,因此您可以创建新实例并插入参数或仅使用集合初始化程序初始化新实例。我在“使用对话服务”部分官方文档中找到了一个例子:

var parameters = new DialogParameters();
parameters.Add("parameter1", value1);
parameters.Add("parameter2", value2);

// or

var parameters = new DialogParameters
    {
        { "parameter1", value1 },
        { "parameter2", value2 }
    };

_dialogService.ShowDialog("SecondUserControl", parameters, r => {});
© www.soinside.com 2019 - 2024. All rights reserved.