仅在编辑模式下显示静态列表的 WPF DataGridComboboxColumn
Posted
技术标签:
【中文标题】仅在编辑模式下显示静态列表的 WPF DataGridComboboxColumn【英文标题】:WPF DataGridComboboxColumn with static list displaying on editing mode only 【发布时间】:2015-07-24 15:58:20 【问题描述】:所以,我有一个 DataGridComboBoxColumn,它的 itemssource 设置为静态列表。
DatagridComboboxColumn:
<DataGridComboBoxColumn Header="Prioridad" Width="1*" SelectedValueBinding="Binding SelectedPriorityLevel"
DisplayMemberPath="Key" SelectedValuePath="Value" ItemsSource="StaticResource arrList">
</DataGridComboBoxColumn>
静态资源:
<Window.Resources>
<col:ArrayList x:Key="arrList">
<col:DictionaryEntry Key="A" Value="1"/>
<col:DictionaryEntry Key="M" Value="2"/>
<col:DictionaryEntry Key="B" Value="3"/>
</col:ArrayList>
</Window.Resources>
并且绑定设置为带有枚举的字段
Public Enum ActionPlanPriorityLevels
Alta = 1
Media = 2
Baja = 3
End Enum
我遇到的问题是组合框出于某种原因仅在编辑模式下显示。
但所选值未显示
我错过了什么?
【问题讨论】:
我会说它与您绑定到的 SelectedPriorityLevel 属性有关。你能分享一些关于这是什么的代码 抱歉,澄清一下,您是希望组合框始终显示还是只希望在编辑后显示所选值? 我希望编辑后显示选定的值。 :) 那么 SelectedPriorityLevel 是一个具有枚举类型的属性: Public Property SelectedPriorityLevel() As ActionPlanPriorityLevels,Enum ActionPlanPriorityLevels 有 3 个选项,A、M 和 B 就是这样。我将属性的类型更改为整数,瞧!现在它可以工作了。非常感谢凯扎。 【参考方案1】:所以我做了以下事情,它似乎对我来说很好
<Window x:Class="Tester.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:collections="clr-namespace:System.Collections;assembly=mscorlib"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<collections:ArrayList x:Key="arrList">
<collections:DictionaryEntry Key="A" Value="1"/>
<collections:DictionaryEntry Key="M" Value="2"/>
<collections:DictionaryEntry Key="B" Value="3"/>
</collections:ArrayList>
</Window.Resources>
<Grid>
<StackPanel>
<DataGrid ItemsSource="Binding GridItems" x:Name="dataGrid" AutoGenerateColumns="false">
<DataGrid.Columns>
<DataGridComboBoxColumn Header="Prioridad" Width="1*" SelectedValueBinding="Binding SelectedPriorityLevel"
DisplayMemberPath="Key" SelectedValuePath="Value" ItemsSource="StaticResource arrList">
</DataGridComboBoxColumn>
</DataGrid.Columns>
</DataGrid>
</StackPanel>
</Grid>
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
private MainWindowViewModel _viewmodel;
public MainWindow()
_viewmodel = new MainWindowViewModel();
_viewmodel.GridItems.Add(new GridItemViewModel());
_viewmodel.GridItems.Add(new GridItemViewModel());
this.DataContext = _viewmodel;
InitializeComponent();
public class MainWindowViewModel
private ObservableCollection<GridItemViewModel> _gridItems = new ObservableCollection<GridItemViewModel>();
public ObservableCollection<GridItemViewModel> GridItems
get return _gridItems;
set _gridItems = value;
public class GridItemViewModel
private string _selectedPriorityLevel;
public string SelectedPriorityLevel
get return _selectedPriorityLevel;
set _selectedPriorityLevel = value;
【讨论】:
我做到了,它仍然没有显示。只是为了澄清,底层对象正在更新就好了。它只是组合不会在数据网格上显示任何内容,除非它处于编辑模式。【参考方案2】:尝试为所选值添加属性
SelectedValueBinding
https://***.com/a/3270745/2470362
【讨论】:
SelectedValueBinding 在那里。恐怕该列上不存在其他属性。以上是关于仅在编辑模式下显示静态列表的 WPF DataGridComboboxColumn的主要内容,如果未能解决你的问题,请参考以下文章