如何通过函数关闭OpenFileDialog并在MVVM模式silverlight中取消?

时间:2011-12-27 18:48:52

标签: c# silverlight mvvm openfiledialog childwindow

我在这个主题上看到了很多不同的信息,但没有任何帮助。

  1. 你怎么想?可能更好地使用比使用OpenFileDialog的MVVM更简单的模式?
  2. 我有2个功能确定和取消。每个人都有(this.DialogResult = true)(this.DialogResult = false)。我必须以MVVM模式制作它。我现在正在使用value -> (bool cls = true)并将其绑定到DialogResult = {Binding cls}并在不同的函数中更改此属性,但它不起作用。我有一些例外。
  3. 你知道如何通过关闭OpenFileDialog来解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

在这里创建方法可能会让您了解所需的内容

    void OpenDialogAction(object param)
    {
        //Add code here
        OpenFileDialog d = new OpenFileDialog();


        if (d.ShowDialog() == true)
        {
            //set your variable true
        }
        else
        {
            //set your variable false
        }
    }

答案 1 :(得分:0)

如果您确定并且 CANCEL 按钮始终启用,无论状态如何,我认为将它们合并到MVVM设计模式中没什么价值。我不做Silverlight但是假设它与WPF类似,你可以在Properties窗格中检查Cancel按钮的IsCancel属性,当你单击按钮时,它会自动关闭对话框并设置DialogResult = false。对于你的OK按钮,添加像这样简单的东西

    <Button ...Your normal settings here and then...
            Click="DoneButtonClickHandler">

然后在后面的代码中。

    private void DoneButtonClickHandler(object sender, RoutedEventArgs e)
    {
        DialogResult = true;
    }

我知道一些纯粹主义者在代码中不需要任何东西,但对我来说,更简单,更易于维护的代码更好(以及实现MVVM的重点)。现在如果我的OK和Cancel按钮仅在某些模型条件下启用,我可能会将它们设置为与ModelView交互。