[英]WPF Binding a list to a ComboBoxColumn within a DataGrid
我在 WPF 的數據網格中遇到組合框問題。基本上我有一個 class 的“船員”和 class 的“用戶”,在船員 class 中是一個包含該船員所有成員的列表。
理想情況下,我希望數據網格有 3 列“船員 ID”、“成員”和“狀態”,成員列將是一個組合框,可以單擊它來顯示船員的所有成員。 我能夠綁定工作人員,以便 id 和狀態顯示正常但不是成員。
數據網格通過返回所有船員列表的方法綁定在構造函數中。
任何幫助將不勝感激。
public ManagerDashboard(Dashboard Dash)
{
InitializeComponent();
dgCrew.ItemsSource = ds.listallCrews();
}
//CREW CLASS
public class Crew
{
Random rnd = new Random();
Datastore ds = new Datastore();
public List<OperationalUser> lstCrewMembers { get; set; }
public int Crewid { get { return GenId(); } }
public bool bIsActive { get; set; }
public Crew()
{
bIsActive = true;
}
private int GenId()
{
int id = rnd.Next(0, 1000);
foreach (User u in ds.ListAllUsers())
if (id == u.Userid)
id = rnd.Next(0, 1000);
return id;
}
}
//XMAL
<DataGrid.Columns>
<DataGridTextColumn Header="Crew ID"
Binding="{Binding Crewid}" />
<DataGridComboBoxColumn Header="Members"
ItemsSource="{Binding Path=DataContext.Crew, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"
DisplayMemberPath="Name"
SelectedItemBinding="{Binding lstCrewMembers, Mode=TwoWay}"
SelectedValueBinding="{Binding lstCrewMembers.Userid}"
SelectedValuePath="Userid"
/>
<DataGridCheckBoxColumn Header="Active"
Binding="{Binding bIsActive}" />
</DataGrid.Columns>
</DataGrid>
DataGridComboBoxColumn 用於從類型列表中進行選擇,這對所有行都是通用的。 您可能可以從成員列表中創建一個 ComboBoxItems 列表。 但我建議您使用 RowDetails 來顯示您的成員,如下所示:
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<DataGrid ItemsSource="{Binding lstCrewMembers}" IsReadOnly="True" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="UserId" Binding="{Binding Userid}"></DataGridTextColumn>
<DataGridTextColumn Header="Name" Binding="{Binding Name}"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.