Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.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

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
C# 在codebehind中使用数据绑定_C#_Xamarin_Mvvm_Xamarin.forms - Fatal编程技术网

C# 在codebehind中使用数据绑定

C# 在codebehind中使用数据绑定,c#,xamarin,mvvm,xamarin.forms,C#,Xamarin,Mvvm,Xamarin.forms,我有一个将命令绑定到按钮的页面。当我点击它时,我会调用一个方法,从API中获取我想要的数据。如果我不想只在视图中绑定数据,还想在代码隐藏中使用这些数据呢?! 假设这是我的观点: <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="HelloWorld.Pages.

我有一个将命令绑定到按钮的页面。当我点击它时,我会调用一个方法,从API中获取我想要的数据。如果我不想只在视图中绑定数据,还想在代码隐藏中使用这些数据呢?! 假设这是我的观点:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         x:Class="HelloWorld.Pages.JohnDoePage"
         xmlns:local="clr-namespace:Xamarin.Forms.Maps;assembly=Xamarin.Forms.Pages"
         xmlns:vm="clr-namespace:HelloWorld.ViewModel;assembly=HelloWorld">
   <StackLayout Padding="20, 10" HorizontalOptions="Center">
                <Button Command="{Binding JohnDoe}"
                Text="Data about John Doe" />
   </StackLayout>
</ContentPage>
视图模型:

     Data _data;
    public Data Data
    {
        get { return _data; }
        set
        {
            if (value == _data) return;
            _data = value;
            OnPropertyChanged();
        }
    }
    public ICommand JohnDoe
    {
        get
        {
            return new Command(async () =>
            {
                var Dataa = await _apiServices.InfoAboutJohnDOe();
            });
        }
    }

而且我得到所需数据的服务也可以。我使用相同的viewmodel绑定不同的命令,顺便说一下,我不知道这是否可行,所以我被卡住了。你知道我如何使用视图代码中的数据吗??提前谢谢

为什么不维护对VM的类级引用呢

Models.Info info;
InfoDetailsViewModel vm;

public JohnDoePage(Models.Info info)
{
    InitializeComponent();
    vm = new InfoDetailsViewModel(info);
    BindingContext = vm;
    this.info= info;
 }

为什么不维护对VM的类级引用呢

Models.Info info;
InfoDetailsViewModel vm;

public JohnDoePage(Models.Info info)
{
    InitializeComponent();
    vm = new InfoDetailsViewModel(info);
    BindingContext = vm;
    this.info= info;
 }

将服务调用的结果另存为公共属性

public <TargetType> Dataa { get; set; }

因为这样您就可以从ViewModel中获取信息

var data = dataContext.Dataa;


这有帮助吗?

将服务呼叫的结果保存为公共属性

public <TargetType> Dataa { get; set; }

因为这样您就可以从ViewModel中获取信息

var data = dataContext.Dataa;


这有帮助吗?

是的,好的。但是数据呢?因为
vm=newinfodetailsviewmodel(info)
info是我从另一个命令获得的另一个数据。只需在VM中公开一个数据属性,然后您就可以从课程的代码中访问它。我已经这样做了,但是我没有在代码隐藏中获得模型的正确引用。谢谢你的回答:)是的,好的……但是数据呢?因为
vm=newinfodetailsviewmodel(info)
info是我从另一个命令获得的另一个数据。只需在VM中公开一个数据属性,然后您就可以从课程的代码中访问它。我已经这样做了,但是我没有在代码隐藏中获得模型的正确引用。谢谢你的回答:)嘿,马克,有点晚了,但我尝试了你的解决方案,我的应用程序坏了。我认为这是因为
var data=dataContext.Dataa点击按钮前检查数据。你知道怎么处理吗?!:)@马克,有点晚了,但我尝试了你的解决方案,我的应用程序坏了。我认为这是因为
var data=dataContext.Dataa点击按钮前检查数据。你知道怎么处理吗?!:)@做记号