Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.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# xamarin绑定类属性_C#_Xamarin.forms_Binding_Derived Class - Fatal编程技术网

C# xamarin绑定类属性

C# xamarin绑定类属性,c#,xamarin.forms,binding,derived-class,C#,Xamarin.forms,Binding,Derived Class,我正在尝试通过xamarin为android制作一个小应用程序。我还试图包括一些MVVM。 我有一个模型类UserInfoM(带有名称、密码等)。我有一个viewmodel“mainpageVM”,我想在其中使用UserInfoM类。直到达到一定的磅数为止。当我在应用程序中键入内容时,会触发UserInfoM(odel)中的getter和setter。但我似乎无法在虚拟机中获取数据。这可能是一个明显的错误,但经过几天的搜索,我似乎找不到答案 在我的视图(xaml)中,我绑定了Viewmodel和

我正在尝试通过xamarin为android制作一个小应用程序。我还试图包括一些MVVM。 我有一个模型类UserInfoM(带有名称、密码等)。我有一个viewmodel“mainpageVM”,我想在其中使用UserInfoM类。直到达到一定的磅数为止。当我在应用程序中键入内容时,会触发UserInfoM(odel)中的getter和setter。但我似乎无法在虚拟机中获取数据。这可能是一个明显的错误,但经过几天的搜索,我似乎找不到答案

在我的视图(xaml)中,我绑定了Viewmodel和

<ContentPage.BindingContext>
    <local:MainPageVM/>
</ContentPage.BindingContext>
在我的UserInfoM(odel)中,我有以下属性(以及其他属性):

因此,xaml绑定似乎可以工作,因为用户属性getter和setter是触发器。但仅在模型中,尽管在视图中绑定设置为MainPageVM。在MainPageVM中,所有模型属性保持为空。它必须是某种逻辑错误,我没有得到错误,条目被很好地填充,UserInfoM(odel)中的用户属性由条目字段填充(设置),但我无法从模型中访问/使用UserInfo.user(或其他)属性

简言之,我可以绑定单个属性,但不能使用属性绑定另一个类中的属性。我看了很多教程,搜索了很多,但是找不到这个。 我希望这个解释足够清楚。。。任何帮助都将不胜感激。
raiseproperty方法实现INotifyPropertyChanged,并完美地适用于单个属性。de UserInfoM(odel)中的用户属性已更新,但Viewmodel中的用户属性未更新。

您无需显式地将BindingContext设置为条目。为页面设置绑定上下文后,它将应用于页面中的所有元素。您对条目的绑定是正确的,因此应该如下所示:



如果像这样替换代码,条目将成功地找到其绑定上下文(从页面的绑定上下文),它将查找其中的UserInfo类,并将UserInfo的User属性绑定到条目的Text属性。

非常感谢!这是一个简单的,现在它似乎是工作的EXPECTED。很高兴它的工作!由于您是新加入社区的,当答案正确时,请使用绿色复选标记,以便帮助他人(他们将看到此答案确实解决了您的问题)。:)好的,完成了。我不知道绿色的复选标记。谢谢你的提示,以后我会记住的。
    <Entry Grid.Row="2" Grid.Column="2" Grid.ColumnSpan="2" Placeholder="Enter Username"
           Text="{Binding UserInfo.User, Mode=TwoWay}"                
        >
        <Entry.BindingContext>
            <local:MainPageVM/>
        </Entry.BindingContext>
    public UserInfoM UserInfo
    {
        get { return _userInfo ?? (_userInfo = new UserInfoM()); }
        set
        {
            _userInfo = value;
        }
    }
    private string user;
    public string User
    {
        get { return user; }
        set
        {
            if (user != value)
            {
                user = value;
                RaisePropertyChanged(nameof(User));
            }
        }
    }