清空条目不会重置绑定属性

时间:2019-02-11 21:02:30

标签: c# data-binding xamarin.forms

我有一个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。)

也许有人知道我想念的是什么?谢谢。

1 个答案:

答案 0 :(得分:1)

Entry.Text在将string绑定到int时需要一个int
为了解决该问题,您可以:

  1. 如果要保持对string属性(TileWidth,TileHeight)的绑定,请使用IValueConverter
  2. 只需将其绑定到Width属性。这不是一个好主意,因为我们正在谈论代表Heightrouter.get('/:reportId', verify.verifyAdmin, async (req, res) => { if (req.params.reportId === 'allAnswered') { await reportService.getAllAnswered(req.query.userId, req.query.sessionId, (response) => { res.status(response.status).send(response); }) } else { await reportService.getReportById(req.params.reportId, (response) => { res.status(response.status).send(response); }) } }); 的属性。