Goa*_*ker 15 wpf datagrid mvvm datagridcomboboxcolumn
这真让我抓狂.我有一个DataGrid,它有一个DataGridComboBoxColumn,我希望用户可以使用它来进行选择.这是我网格的基本轮廓.
<DataGrid ItemsSource="{Binding GoalList}" DockPanel.Dock="Bottom" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridComboBoxColumn ItemsSource="{Binding LifeAreaList}" Header="Life Area"/>
<DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
DataGrid绑定到Goal类型的对象集合.每个目标都有一个LifeArea类型的属性.每个LifeArea都具有LifeAreaId和Name属性.
数据上下文包含一个可观察的目标集合:目标列表和生命区域列表:LifeAreaList.我希望用户能够为目标选择不同的生活区域.生命区域的名称也需要是显示的值.
编辑
解决方案是必须将DataGridComboBoxColumn的ItemsSource设置为静态资源.另一种选择是通过代码设置ItemsSource.
最后我有:
<DataGridComboBoxColumn x:Name="_lifeAreaComboBoxColumn" SelectedItemBinding="{Binding LifeArea}" DisplayMemberPath="Name" Header="Life Area">
Run Code Online (Sandbox Code Playgroud)
在后面的代码我设置ItemsSource:
_lifeAreaComboBoxColumn.ItemsSource = LifeAreaDAL.GetLifeAreas();
Run Code Online (Sandbox Code Playgroud)
当我有机会将其转换为StaticResource时.
Ken*_*art 22
你需要做这样的事情(不要射击信使):
<DataGridComboBoxColumn Header="Life Area" SelectedItemBinding="{Binding SelectedLifeArea}">
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding LifeAreaList}"/>
<Setter Property="IsReadOnly" Value="True"/>
</Style>
</DataGridComboBoxColumn.ElementStyle>
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding LifeAreaList}"/>
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
20225 次 |
最近记录: |