相关疑难解决方法(0)

使用 FSharp.ViewModule 关闭对话框

在我之前的问题“使用 FSharp.ViewModule 启用对话框确定按钮”中,我达到了仅当对话框字段的验证器为真并且 ViewModule 的 IsValid 属性为真时才启用对话框的确定​​按钮的地步。但在那之后我又遇到了几个问题:

1) 单击确定按钮并没有关闭对话框,即使我IsDefault="true"在 XAML 中设置。

2) 单击确定按钮时,有时我想做比 ViewModule 验证器提供的检查更多的检查(例如,检查电子邮件地址)。然后,如果此自定义验证失败,我想阻止对话框关闭。

但是我不知道在使用 F# 和 MVVM 时如何做到这两点。首先,我尝试将 XAML 放入 C# 项目和 F# 库中的视图模型代码。然后我在后面的代码中使用了 OK 按钮的 Click 处理程序来关闭窗口。这修复了 1),但不是 2)。

所以这是我的 XAML:

<TextBox Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}"/>
<TextBox Text="{Binding Email, UpdateSourceTrigger=PropertyChanged}" />
<Button Content="OK" IsEnabled="{Binding IsValid}" IsDefault="true" Command="{Binding OkCommand}" 
    <!--Click="OnOK"--> />
Run Code Online (Sandbox Code Playgroud)

和我的视图模型 - 在validate函数中带有注释以显示单击“确定”按钮时我想要执行的操作:

let name = self.Factory.Backing( <@ self.Name @>, "", notNullOrWhitespace)
let email = self.Factory.Backing( <@ self.Email @>, "", notNullOrWhitespace)
let dialogResult = …
Run Code Online (Sandbox Code Playgroud)

wpf f# mvvm fsharp.viewmodule

5
推荐指数
1
解决办法
290
查看次数

标签 统计

f# ×1

fsharp.viewmodule ×1

mvvm ×1

wpf ×1