Xaml 在Xamarin视图中寻找实现绑定的多属性依赖关系的正确方法
我不熟悉Xamarin world及其数据绑定规则。我有一个ViewModel,它具有observableXaml 在Xamarin视图中寻找实现绑定的多属性依赖关系的正确方法,xaml,xamarin,xamarin.forms,Xaml,Xamarin,Xamarin.forms,我不熟悉Xamarin world及其数据绑定规则。我有一个ViewModel,它具有observableCurrentOrder属性和3个属性,这些属性的值依赖于它。所有4个属性都与绑定一起在视图中使用,因此CurrentOrder中的每个更改都应将更改传播到其他3个属性,并影响视图显示其控件和数据的方式。我对如何将CurrentOrder更改的信号传播到其他3个相关属性感到困惑。我提出了实际可行的代码,但对我来说,它看起来有点笨拙,并在独立属性CurrentOrder中设置了依赖项,而我更希
CurrentOrder
属性和3个属性,这些属性的值依赖于它。所有4个属性都与绑定一起在视图中使用,因此CurrentOrder
中的每个更改都应将更改传播到其他3个属性,并影响视图显示其控件和数据的方式。我对如何将CurrentOrder
更改的信号传播到其他3个相关属性感到困惑。我提出了实际可行的代码,但对我来说,它看起来有点笨拙,并在独立属性CurrentOrder
中设置了依赖项,而我更希望它是另一种方式:依赖属性应该更好地知道它们所依赖的属性
请注意,SetProperty和OnPropertyChanged方法位于基本视图模型中,由标准VS Xamarin.Forms项目模式生成
private int _currentOrder = 1;
public int CurrentOrder
{
get => _currentOrder;
set => SetProperty(ref _currentOrder, value, onChanged: () =>
{
OnPropertyChanged(nameof(CurrentItem));
OnPropertyChanged(nameof(IsTheLastItem));
OnPropertyChanged(nameof(IsTheFirstItem));
});
}
public string CurrentItem => Items[CurrentOrder - 1];
public bool IsTheLastItem => CurrentOrder == Items.Count;
public bool IsTheFirstItem => CurrentOrder == 1;
非常感谢您对这里的最佳实践提出的任何建议我会将其用于此类从属属性
只需添加nuget,别忘了添加FodyWeavers.xml,您的类将如下所示
公共类视图模型:INotifyPropertyChanged
{
公共事件属性更改事件处理程序属性更改;
公共int CurrentOrder{get;set;}
公共字符串CurrentItem=>Items[CurrentOrder-1];
public bool IsTheLastItem=>CurrentOrder==Items.Count;
公共布尔值为第一项=>CurrentOrder==1;
}
我们总是像你一样在场景中这样做。这是良好的实践,它确实有效。谢谢仅针对其他人信息:默认情况下,它会将所有属性中的更改通知所有属性,但通过属性,您可以定义哪些属性取决于哪些属性,代码保持整洁