簡體   English   中英

View WPF中的多個ViewModel

[英]Multiple ViewModels in View WPF

如何將第一個/第二個/第三個Viewmodel的屬性綁定到單個視圖中的網格列。

我怎么能顯式引用適當的視圖模型中的每個屬性到視圖中的網格列。

DataContext="{DynamicResource VMContainer}">
<Window.Resources>
    <vm:VMContainer x:Key="VMContainer"/>
</Window.Resources>

public class VMContainer
{
    public FirstViewModel   VM1 { get; set; }
    public SecondViewModel  VM2 { get; set; }
    public ThirdViewModel  VM3 { get; set; }
}

如果是單個視圖模型,則可以執行以下操作。

ItemsSource="{Binding Source={StaticResource VMContainer}}

GridColumn Header="Salary" Binding="{Binding Salary, Mode=TwoWay}"

嘗試如下:

<ListView ItemsSource="{Binding Source={StaticResource VMContainer}}">
   <ListView.View>
     <GridView x:Name="grdTest">
               <GridViewColumn Header="Salary" DisplayMemberBinding="{Binding VM1.Salary / VMContainer.M1.Salry, Mode=TwoWay}" Width="100" />           
     </GridView>
</ListView.View>

InitializeComponent();
VMContainer VMC = new VMContainer();
DataContext = VMC;

我怎么能顯式引用適當的視圖模型中的每個屬性到視圖中的網格列。 由其他視圖模型組成的視圖模型(wpf_mvvm中的復合ViewModel)

問題是,VMC總是返回null,如果有任何建議,我將不勝感激。

如果您有這樣的事情:

public class FirstViewModel
{
    public double Salary {get; set;}
}

然后這將工作:

<TextBox Text="{Binding VM1.Salary}" />

但是,當您使用諸如DataGrid或GridView之類的ItemsControl時,GridColumns中定義的綁定必須引用ItemsSouce中定義的項目。 例如:

public class Employee
{
    public double Salary {get; set;}
}

public class FirstViewModel
{
    public FirstViewModel()
    {
          Employees = new List<Employee>
          {
              new Employee() { Salary=10000 }
              new Employee() { Salary=15000 }
          }
    }
    public List<Employee> Employees {get;}
}
<DataGrid ItemsSource="{VM1.Employees}">
   <DataGrid.Columns>
       <DataGridTextColumn Binding="{Binding Salary}" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM