![](/img/trans.png)
[英]WPF MVVM - Binding multiple View/ViewModels to same base 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.