首页 > 解决方案 > 清空条目不会重置绑定属性

问题描述

我有一个 Xamarin.Forms 应用程序。它使用的是freshmvvm 框架,这与我的问题无关。一个页面有几个条目:

        <Entry Placeholder="Width" Text="{Binding TileWidth, Mode=TwoWay}" />
        <Entry Placeholder="Height" Text="{Binding TileHeight, Mode=TwoWay}" />

这些条目绑定到 ViewModel 属性:

    int _tileWidth;
    public int TileWidth
    {
        get => _tileWidth;
        set
        {
            _tileWidth = value;
            RaisePropertyChanged(nameof(TileWidth));
        }
    }

    int _tileHeight;
    public int TileHeight
    {
        get => _tileHeight;
        set
        {
            _tileHeight = value;
            RaisePropertyChanged(nameof(TileHeight));
        }
    }

如果用户在条目中输入一些数字,则绑定会相应地设置属性。但是如果之后用户从条目中删除了一个值,绑定不会将相应的属性重置为 0,这会导致各种问题。执行甚至没有到达属性的设置部分。(如果用户显式输入 0,则绑定属性按预期设置为 0)。

也许有人知道我错过了什么?谢谢。

标签: c#data-bindingxamarin.forms

解决方案


Entry.Text预计string您将其绑定到int.
为了解决问题,您可以:

  1. IValueConverter如果要保留对int属性(TileWidth、TileHeight)的绑定,请使用 an 。
  2. 只需将其绑定到string属性。这不是一个好主意,因为我们正在谈论表示Width&的属性Height

推荐阅读