【发布时间】:2018-08-16 15:40:16
【问题描述】:
我有一个包含 2 列的数据网格 一个是 DataGridText 第二个是 DataGridComboBox 当我加载数据时,两列都被归档,但是当我点击第二个时,我想要一个组合框来加载第二个列表中的数据 所以列表是这样的
public ObservableCollection PriorityRuleList { get;放; } = 新的 ObservableCollection();
public ObservableCollection<int> RulePriorityDefaultList { get; set; } = new ObservableCollection<int>() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 };
PriorityRule 类是这样的:
public class PriorityRule
{
public PriorityRule(RecipientSource recipientSource)
{
RuleType = recipientSource.Name;
Priority = recipientSource.Priority;
}
public PriorityRule() { }
public string RuleType { get; set; }
public int Priority { get; set; }
public RecipientSource RecipientSource { get; set; }
}
.XAML 文件是这样的:
<DataGrid
x:Name="PriorityRulesGrid"
HorizontalAlignment="Stretch"
VerticalAlignment="Top"
AutoGenerateColumns="false"
CanUserAddRows="False"
GridLinesVisibility="All"
HorizontalScrollBarVisibility="Auto"
IsReadOnly="False"
RowHeight="32"
VerticalScrollBarVisibility="Auto"
HorizontalContentAlignment="Stretch"
ItemsSource="{Binding PriorityRuleList}"
ColumnWidth="*" >
<DataGrid.Columns>
<DataGridTextColumn Header="{texts:VRI Rule type}"
Binding="{Binding RuleType}"
IsReadOnly="True"
Width="*"/>
<DataGridComboBoxColumn Header="{texts:VRI Priority}"
Width="*"
SelectedValuePath="Priority"
SelectedValueBinding="{Binding Priority}"
DisplayMemberPath="Priority">
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="{x:Type ComboBox}">
<Setter Property="ItemsSource" Value="{Binding Path=DataContext.PriorityRuleList, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" />
</Style>
</DataGridComboBoxColumn.ElementStyle>
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding Path=DataContext.RulePriorityDefaultList, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" />
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
</DataGrid.Columns>
</DataGrid>
我的问题是: 单击第二列中的组合框时,我应该如何加载第二个列表。第一个列表在窗口出现时加载,所以没关系,但是我需要从组合框中选择优先级,所以我无法加载第二个列表(int类型)以便从中选择?
谢谢!
【问题讨论】:
标签: wpf list xaml binding datagridcomboboxcolumn