XAML 为多个视图模型的视图设置BindingContext的最佳实践是什么?

lvmkulzt  于 2023-03-16  发布在  其他
关注(0)|答案(1)|浏览(161)

假设我们有这样一个结构,一个附加了视图模型的页面:
代码隐藏:

public partial class Page
{
    public Page(PageViewModel pageViewModel)
    {
        InitializeComponent();
        BindingContext = pageViewModel;
    }
}

页面的相关部分:

<Button Text="Click here" Command="{Binding ButtonClickedCommand}" />

视图模型PageViewModel有一个RelayCommand,它带有一个名为“ButtonClicked”的方法。
假设我想添加一个文本字段,其中包含来自不同视图模型的一些数据,例如XAML:

<CarouselView ItemsSource="{Binding NewList}">
<Label Text="{Binding ListItemName}" />
</CarouselView>

添加新视图模型的最佳方法是什么?本质上就是添加多个绑定上下文。

xpszyzbs

xpszyzbs1#

一个页面通常只绑定到一个绑定上下文,您可以在每个子控件中设置自己的绑定上下文来达到这个效果,如下所示:

<Grid>
        <Grid.RowDefinitions>
          <RowDefinition Height="*" />
          <RowDefinition Height="*" />
        </Grid.RowDefinitions>
      
    <StackLayout
        Grid.Row="0"
        BindingContext="{Binding Source = {local:OneViewModel}}"/>
        <label Text="{Binding Name}"/>
    </StackLayout>

    <StackLayout
        Grid.Row="1"
        BindingContext="{Binding Source = {local:TwoViewModel}}">
        <label Text="{Binding Name}"/>
    </StackLayout>

  </Grid>

相关问题