Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 清空条目不会重置绑定属性_C#_Data Binding_Xamarin.forms - Fatal编程技术网

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

C# 清空条目不会重置绑定属性,c#,data-binding,xamarin.forms,C#,Data Binding,Xamarin.forms,我有一份Xamarin.表格申请表。它使用的是freshmvvm框架,这与我的问题无关。一个页面有两个条目: <Entry Placeholder="Width" Text="{Binding TileWidth, Mode=TwoWay}" /> <Entry Placeholder="Height" Text="{Binding TileHeight, Mode=TwoWay}" /> 如果用户在条目中输入一些数字,绑定会相应地设置属

我有一份Xamarin.表格申请表。它使用的是freshmvvm框架,这与我的问题无关。一个页面有两个条目:

        <Entry Placeholder="Width" Text="{Binding TileWidth, Mode=TwoWay}" />
        <Entry Placeholder="Height" Text="{Binding TileHeight, Mode=TwoWay}" />
如果用户在条目中输入一些数字,绑定会相应地设置属性。但是,如果在此之后用户从条目中删除了一个值,则绑定不会将相应的属性重置为0,这会导致各种问题。执行甚至不到属性的集合部分。(如果用户显式输入0,则绑定属性将按预期设置为0)

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

在将
字符串绑定到
int
时需要一个
字符串
为了解决此问题,您可以:

  • 如果要保留对
    int
    属性(TileWidth、TileHeight)的绑定,请使用
  • 只需将其绑定到
    字符串
    属性即可。这不是一个好主意,因为我们讨论的是表示
    宽度
    高度
    的属性

  • Entry.Text
    是绑定到
    int
    时的
    字符串,这可能就是问题所在。尝试使用转换器或
    int?
    @EvZ int?中断验证,但使用字符串作为属性类型有效。请给我一个答案,我会记下来的。感谢您的帮助。谢谢,使用字符串作为属性类型可以解决此问题。我可以问一下为什么我需要一个转换器吗?如果你想保持绑定到
    int
    属性(TileWidth,TileHeight)
    IValueConverter
    将需要解析
    string
    int
    。如果你觉得我的答案有用,请把它投上去。我明白,我只是不确定我是否想要它。我只是不知道当我需要它做计算时,把它作为字符串转换成int是否更好,或者使用转换器…我不认为这里有任何疑问-
    宽度
    高度
    不应保留为
    字符串
    ,而应以正确的数字格式表示实际值。
        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));
            }
        }