仅在编辑模式下显示静态列表的 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的主要内容,如果未能解决你的问题,请参考以下文章

WPF MVVM模式下实现ListView下拉显示更多内容

回收站视图仅在再次启动活动后才显示更新列表

在WPF中的Combobox中绑定

如何在odoo(版本8到15)中以可编辑模式隐藏字段

jQuery 仅在 DOM 中单击时查找下一个表单元素

横向模式下的闪屏