WPF中TargetNullValue在文本框绑定设置为OneWayToSource时返回值的问题

5

我有一个 XAML 文本框

<TextBox Text="{Binding ProdFilter.Min, Mode=OneWayToSource,
   UpdateSourceTrigger=PropertyChanged, TargetNullValue=''}"
   Width="50" DockPanel.Dock="Right" TabIndex="3" />

绑定到此属性:

        public double? Min
        {
            get { return min; }
            set
            {
                if (value == null)
                    value = 0;
                min = value;
                OnPropertyChanged("Min");
            }
        }

我遇到的问题是当程序启动或用户清除文本时,文本框的文本会被设为“0”。我不知道这种行为是否正确,因为我正在使用OneWayToSource,但我希望当文本为空时我的属性被设置为null(而文本保持为空!)有什么想法吗?谢谢!

我不理解你的属性。为什么在不允许将其设置为null时使用可空的double?为什么不直接使用普通的double呢? - Daniel Hilgarth
现在我正在使用普通的双精度浮点数……不记得那天我脑子里想了什么,哈哈哈! - Martín Coll
1个回答

6
这是因为即使绑定是“OneWayToSource”,WPF在设置值后仍会从属性重新读取该值。请参见此问题的答案,了解可能的解决方法。

顺便提一下,这个行为是在.NET 4.0中引入的。 - Fredrik Hedblad
@Meleak - 是的,谢谢你提出这个好问题 :) - Pavlo Glazkov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接