作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的对话框,其中有两个用于输入人名和地址的字段,我只希望在它们都有值时启用“确定”按钮。以下是我的观点的相关部分:
<TextBox Text="{Binding Name}" ... />
<TextBox Text="{Binding Address}" ... />
<Button Content="OK" IsEnabled="{Binding OK, Mode=OneWay}" ... />
这是我的 View 模型:
namespace ViewModels
open FSharp.ViewModule
open FSharp.ViewModule.Validation
open FsXaml
type DialogView = XAML<"Dialog.xaml">
type DialogVM() as self =
inherit ViewModelBase()
let name = self.Factory.Backing( <@ self.Name @>, "", notNullOrWhitespace )
let address = self.Factory.Backing( <@ self.Address @>, "" )
let hasValue str = not( System.String.IsNullOrWhiteSpace( str ))
member x.Name
with get() = name.Value
and set value = name.Value <- value ; self.RaisePropertyChanged( <@ self.OK @> )
member x.Address
with get() = address.Value
and set value = address.Value <- value ; self.RaisePropertyChanged( <@ self.OK @> )
member x.OK with get() = hasValue x.Name && hasValue x.Address
但是确定按钮始终处于启用状态。我做错了什么?
最佳答案
问题是 TextBox.Text
的默认绑定(bind)模式 = LostFocus
。该属性只是没有更新。
所以:
<TextBox Text="{Binding Name,UpdateSourceTrigger=PropertyChanged}"/>
<TextBox Text="{Binding Address,UpdateSourceTrigger=PropertyChanged}" />
但是 FSharp.ViewModule 中有一些东西可以让您的生活更轻松。在您的情况下,它是属性 IsValid
:
let name = self.Factory.Backing( <@ self.Name @>, "", notNullOrWhitespace)
let address = self.Factory.Backing( <@ self.Address @>, "", notNullOrWhitespace)
member x.Name
with get() = name.Value
and set value = name.Value <- value
member x.Address
with get() = address.Value
and set value = address.Value <- value
在 XAML 中:
<Button Content="OK" IsEnabled="{Binding IsValid}" />
关于wpf - 使用 FSharp.ViewModule 启用对话框确定按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40927769/
在我之前的问题“使用 FSharp.ViewModule 启用对话框“确定”按钮”中,我发现只有当对话框字段的验证器为 true 并且 ViewModule 的 IsValid 属性为 true 时,
我有一个简单的对话框,其中有两个用于输入人名和地址的字段,我只希望在它们都有值时启用“确定”按钮。以下是我的观点的相关部分: 这是我的 View 模型: namespace ViewModels
在 FSarp.ViewModule我有一个简单的 View ,单击按钮会根据右侧的文本框在左侧的文本框中生成一个随机数。如何绑定(bind)右侧文本框中的更改(例如手动输入数字),以便通过调用 cl
我是一名优秀的程序员,十分优秀!