gpt4 book ai didi

c# - 将命令/属性绑定(bind)到 C# 中的元素?

转载 作者:太空宇宙 更新时间:2023-11-03 12:44:41 26 4
gpt4 key购买 nike

我正在尝试实现 XLabs CameraViewModel功能到我的 Xamarin Forms 应用程序中。不幸的是,给定的示例使用 XAML 将 View 与数据绑定(bind),但我需要在代码隐藏中执行此操作。

以下代码用于选择图片并获取图片来源。

public class CameraViewModel : XLabs.Forms.Mvvm.ViewModel
{
...
private ImageSource _imageSource;
private Command _selectPictureCommand;

public ImageSource ImageSource
{
get { return _imageSource; }
set { SetProperty(ref _imageSource, value); }
}

public Command SelectPictureCommand
{
get
{
return _selectPictureCommand ?? (_selectPictureCommand = new Command(
async () => await SelectPicture(),() => true));
}
}
...
}

并且这些命令绑定(bind)到 XAML:

<Button Text="Select Image" Command="{Binding SelectPictureCommand}" />
<Image Source="{Binding ImageSource}" VerticalOptions="CenterAndExpand" />

如何在创建的元素的代码隐藏中应用相同的命令?

CameraViewModel ViewModel = new CameraViewModel();

var Take_Button = new Button{ };
Take_Button.SetBindings(Button.CommandProperty, //*???*//);

var Source_Image = new Image { };
Source_Image.SetBinding(Image.SourceProperty, //*???*//);

我已经通过执行以下操作成功绑定(bind)了 SelectPictureCommand:

Take_Button .Command = ViewModel.SelectPictureCommand;

但是我怀疑它是否是正确的方法,同样的逻辑不能应用于 ImageSource。

最佳答案

对于您拥有的按钮:

var Take_Button = new Button{ };
Take_Button.SetBinding(Button.CommandProperty, new Binding { Path = nameof(ViewModel.SelectPictureCommand), Mode = BindingMode.TwoWay, Source = ViewModel});

对于您拥有的图像:

var Source_Image = new Image { };
Source_Image.SetBinding(Image.SourceProperty, new Binding { Path = nameof(ViewModel.ImageSource), Mode = BindingMode.TwoWay, Source = ViewModel });

关于c# - 将命令/属性绑定(bind)到 C# 中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37748256/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com