在视图模型中使用绑定

本文关键字:绑定 视图 模型 | 更新日期: 2023-09-27 18:32:53

我正在做一个项目,在一个 xaml 页面中,我有一些像这样的绑定Textblock

<PivotItem Header="Lista">
   <ListView x:Name="List1" ItemsSource="{x:Bind ProdutoViewModel.Produtos}">
     <ListView.ItemTemplate>
       <DataTemplate x:DataType="list:Produto">`
                ...
          <StackPanel>
            <TextBlock x:Name="nome" Text="{x:Bind Nome, Mode=OneWay}" />
            <TextBlock Text="{x:Bind Preco, Mode=OneWay}" />
            <TextBlock Text="{x:Bind Disponivel, Mode=OneWay}" />
            <TextBlock Text="{x:Bind Fornecedor, Mode=OneWay}" />
            <TextBlock Text="{x:Bind Categoria, Mode=OneWay}" />
            <Image Source="Assets/mouse.png" />
            <Image Source="Assets/teclado.png"/>
          </StackPanel>
        </DataTemplate>
       </ListView.ItemTemplate>
      </ListView>
</PivotItem>

然后我还有另一个这样的pivot

<PivotItem>
 <PivotItem Header="Carrinho">
   <ListView x:Name="Cart" ItemsSource="{x:Bind EncomendaProdutoViewModel.EncomendaProdutos}">
     <ListView.ItemTemplate>
      <DataTemplate x:DataType="list:EncomendaProduto">
        <StackPanel>
         <Button x:Name="pay" Content="Pagar" Click="Payment_click"/>
         <TextBlock Text="{x:Bind Quantidade, Mode=OneWay}" />
         <TextBlock Text="{x:Bind Preco, Mode=TwoWay}" />
        </StackPanel>
      </DataTemplate>
     </ListView.ItemTemplate>
    </ListView>
  </PivotItem>

如何将从第一个pivot的数据显示到第二个?我在每个产品的第一个pivotitem上都有一个按钮,当我按下它时,我想将该产品的数据添加到第二个pivotitem

在视图模型中使用绑定

创建一个外部视图模型,如下所示:

<Page.DataContext>
    <vm:MasterViewModel x:Name="ViewModel" />
</Page.DataContext>
class MasterViewModel 
{
    public ProdutoViewModel ProdutoViewModel { get; set; }
    public EncomendaProdutoViewModel EncomendaProdutoViewModel { get; set; }
}

然后像这样绑定到透视

<Pivot>
    <PivotItem>
        <ListView ItemsSource="{x:Bind ViewModel.ProdutoViewModel.Produtos}"
                  SelectedItem="{x:Bind ViewModel.SelectedItem, Mode=TwoWay}" />
    </PivotItem>
    <PivotItem>
        <ListView ItemsSource="{x:Bind ViewModel.EncomendaProdutoViewModel.EncomendaProdutos}"
                  SelectedItem="{x:Bind ViewModel.EncomendaProdutoViewModelSelectedItem, Mode=TwoWay}" />
    </PivotItem>
</Pivot>

然后,在代码隐藏中处理选择:

class MasterViewModel 
{
    public ProdutoViewModel ProdutoViewModel { get; set; }
    public EncomendaProdutoViewModel EncomendaProdutoViewModel { get; set; }
    Producto _ProdutoViewModel;
    public Producto ProdutoViewModel 
    { 
        get { return _ProdutoViewModel; } 
        set { 
                _ProdutoViewModel = value;
                EncomendaProdutoViewModel.EncomendaProdutos.Add(value); 
            } 
    }
}

我希望这是有道理的。

祝你好运!