Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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
Xaml 双向绑定在Xamarin形式下不起作用_Xaml_Xamarin_Binding_Xamarin.forms - Fatal编程技术网

Xaml 双向绑定在Xamarin形式下不起作用

Xaml 双向绑定在Xamarin形式下不起作用,xaml,xamarin,binding,xamarin.forms,Xaml,Xamarin,Binding,Xamarin.forms,我在Xamarin表单项目中工作。表单输入的值未显示在绑定上下文中。绑定上下文始终显示初始值而不是最新值。我已添加了表单xaml部件和视图相关的视图模型类。是否有其他配置来启用双向绑定 Xaml页面 <StackLayout Grid.Row="0" Grid.Column="0"> <Grid x:Name="grid"> <Grid.RowDefinitions> <RowDefiniti

我在Xamarin表单项目中工作。表单输入的值未显示在绑定上下文中。绑定上下文始终显示初始值而不是最新值。我已添加了表单xaml部件和视图相关的视图模型类。是否有其他配置来启用双向绑定

Xaml页面

 <StackLayout Grid.Row="0" Grid.Column="0">
        <Grid x:Name="grid">
          <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
         </Grid.ColumnDefinitions>
            <Label x:Name="labelName" Grid.Row="0"  Grid.Column="0" Margin="10" FontSize="6"  VerticalOptions="CenterAndExpand"  HorizontalTextAlignment="Start" Text="Name"/>
                    <Entry  x:Name="textName" Grid.Row="0"  Grid.Column="1"  WidthRequest="100" FontSize="6" VerticalOptions="CenterAndExpand" HorizontalOptions="Start" HorizontalTextAlignment="Start" Text="{Binding Name,Mode=TwoWay}"  />
            <Label x:Name="labelAge" Grid.Row="1"  Grid.Column="0" Margin="10" FontSize="6"  Text="Age" VerticalOptions="CenterAndExpand" HorizontalTextAlignment="Start" />
                    <Entry  x:Name="textAge" Grid.Row="1"  Grid.Column="1" WidthRequest="100" FontSize="6" VerticalOptions="CenterAndExpand" HorizontalOptions="Start" HorizontalTextAlignment="Start" Text="{Binding Age,Mode=TwoWay}" />
            <Label x:Name="labelAddress" Grid.Row="2"  Grid.Column="0" Margin="10" FontSize="6"  Text="Address" VerticalOptions="CenterAndExpand" HorizontalTextAlignment="Start" />
                    <Entry  x:Name="textAddress" Grid.Row="2"  Grid.Column="1" WidthRequest="100" FontSize="6" VerticalOptions="CenterAndExpand" HorizontalOptions="Start" HorizontalTextAlignment="Start"  Text="{Binding Address,Mode=TwoWay}" />
            <Label x:Name="labelNICNumber" Grid.Row="3"  Grid.Column="0" Margin="10" FontSize="6" Text="NIC" VerticalOptions="CenterAndExpand" HorizontalTextAlignment="Start" />
                    <Entry  x:Name="textNIC" Grid.Row="3"  Grid.Column="1" WidthRequest="100" FontSize="6" VerticalOptions="CenterAndExpand" HorizontalOptions="Start" HorizontalTextAlignment="Start" Text="{Binding NIC,Mode=TwoWay}" />
            <Button Grid.Row="4"  Grid.Column="1" HeightRequest = "30"   VerticalOptions="CenterAndExpand" HorizontalOptions="Start" FontSize="6" Text="Save" Clicked="UserSaveClick" />
        </Grid>
    </StackLayout>
你能查一下吗

1.在条目控件中输入文本时,请检查文本是否到达视图模型中每个属性的断点

2.检查INotifyPropertyChanged是否已实现

3.通过设置入口控件文本属性的硬代码进行检查。

您可以检查:

1.在条目控件中输入文本时,请检查文本是否到达视图模型中每个属性的断点

2.检查INotifyPropertyChanged是否已实现


3.通过设置条目控件的文本属性的硬代码进行检查。

还应检查setter方法是否为私有方法。我花了几个小时才发现这个简单的复制粘贴错误。 我在调试输出绑定中遇到此错误:“xxx”属性未在“yyyy”上找到,目标属性为:“Xamarin.Forms.Entry.Text”。
顺便说一下,此错误消息不是非常清楚。

还要检查setter方法是否为非私有方法。我花了几个小时才发现这个简单的复制粘贴错误。 我在调试输出绑定中遇到此错误:“xxx”属性未在“yyyy”上找到,目标属性为:“Xamarin.Forms.Entry.Text”。
顺便说一下,此错误消息不是非常清楚。

您是否尝试在codebehind中输入绑定?是的,我将视图模型分配给绑定上下文,并在调试时间检查绑定上下文您的虚拟机是否实现了
INotifyPropertyChanged
?您是否检查了虚拟机中的值是否已更新?您希望使用哪些值更改?您是否尝试在codebehind中输入绑定?是的,我将视图模型分配给绑定上下文,并在调试时间检查绑定上下文您的虚拟机是否实现了
INotifyPropertyChanged
?您是否检查了虚拟机中的值是否已更新?您希望更改哪些值?
public event PropertyChangedEventHandler PropertyChanged;

    private string userName ;
    private string name;
    private int age ;
    private bool isBusy;
    private string address;
    private int nic;


    void OnPropertyChanged([CallerMemberName] string name = "")
    {
        PropertyChanged.Invoke(this, new PropertyChangedEventArgs(name));
    }

    public int NIC
    {
        get { return nic; }
        set
        {
            nic = value;
            OnPropertyChanged();

        }
    }


    public string Name
    {
        get { return name; }
        set
        {
            name = value;
            IsBusy = Name == "aa" ? true : false;
            OnPropertyChanged();
            OnPropertyChanged(nameof(DisplayMessage));
        }
    }



    public int Age
    {
        get { return age; }
        set
        {
            age = value;
            OnPropertyChanged();
        }
    }


    public string Address
    {
        get { return address; }
        set
        {
            address = value;
            OnPropertyChanged();

        }
    }

    public string DisplayMessage
    {
        get
        {
            return "Hi  " + name;
        }

    }




    public bool IsBusy
    {
        get { return isBusy; }
        set { isBusy = value; }
    }


}