我目前正在研究“锦标赛生成器”,并且第一步,我需要将培训师与团队联系起来。因此,我使用了带有集成组合框的WPF ListView。选择模式为“多张”这是一张图片:
好吧,因为没有声誉而没有图片。
看起来像这样:
它有两列。第一列包含不同的培训师名称。第二列在每行中包含一个包含不同团队的组合框。对于每个培训师,可以在组合框中选择一个团队。
这是代码:
<ListView x:Name="TrainerListView" ItemsSource="{Binding Trainer}" HorizontalAlignment="Left" VerticalAlignment="Top" SelectionMode="Multiple">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Path=Name}" Header="Trainer" Width="150"/>
<GridViewColumn Header="Team" Width="150">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}},Path=DataContext.Teams}" Width="120" DisplayMemberPath="Name"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
从代码中可以看到,ListView的Trainer属性为ItemsSource,而ComboBoxes为Teams属性。
单击按钮后,我要获取所有选定的值。此处:“大卫与利物浦足球俱乐部”,“与多特蒙德足球俱乐部的伯恩德”和“与拜仁·穆尼克队的蒂姆”。我尝试了以下方法:
private void StartTournamentButton_Click(object sender, RoutedEventArgs e)
{
var selectedItems = TrainerListView.SelectedItems;
}
但是selectedItems变量仅包含选定的训练器对象“ David,Bernd和Tim”。
仍然我找不到从ListView检索“ Teams值”的方法,更不用说Trainer和Team的关联了。如何获取所选行的值?最好作为关联值。
最好的祝福,
大卫
在Trainer
类,你需要有其他财产的发言权AssignedTeam
距Name
。
public string AssignedTeam { get; set; }
并SelectedItem
用该属性绑定combobox:
<ComboBox ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type Window}},Path=DataContext.Teams}"
SelectedItem="{Binding AssignedTeam}"
Width="120"/>
现在,SelectedItems will give you list of objects of Trainer class
您可以从何处访问团队分配的属性:
var selectedItems = TrainerListView.SelectedItems;
string assignedTeam = ((Trainer)selectedItems[0]).AssignedTeam;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句