微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

网格中下拉列表中的列表未返回值

如何解决网格中下拉列表中的列表未返回值

我有一个枚举

enum SendDays
{
    Maandag = 1,Dinsdag,Vandaag= 99
}

还有一个班级

public struct DayListModel
{
    public int Id;
    public string DayName;
}

我用这样的日子来填充列表

private void Filldays()
{
   foreach(int i in Enum.getValues(typeof(SendDays)))
   {
        DayListModel day =new DaylistModel()
        {
            Id = i,Dayname = Enum.GetName(typeof(SendDays),i)
         };
         DayList.Add(day);
   }

当我使用它时,它在radcomboBox的telerik RadGridView中 喜欢

<telerik:RadComboBox ItemsSource="{Bindning DayList}" displayMemberPath="DayName" SelectedValue="{Bindning DefaultSendDay}" SelectedValuePath="Id"/>

每当我更改所选项目时,该项目都不会传递。

有什么建议吗?

耶罗恩

解决方法

确保类型匹配,即,如果您的DefaultSendDay源属性是byte,则Id中的DayListModel也应该是byte

如果仍然无法使用,请尝试将字段转换为属性,并将结构转换为类:

public class DayListModel
{
    public byte Id { get; set; }
    public string DayName { get; set; }
}
,

这是我的建议,以及如何使它起作用:

  1. 就像@ mm8一样,您应该将ModelA objectA = new ModelA(A - B,C - D); 设为类而不是结构,然后将fields变成properties。如果不使用属性,则private int _x; public int X { get { return _x; } set { X = value <= 0 ? 0 : value; } } private int _y; public int Y { get { return _y; } set { Y = value > 0 ? value : int.MinValue; } } 不起作用。有些东西不适用于结构(例如using == to compare),因此在这种情况下,我将选择一个类。

  2. 您的对象在视图模型中是否可观察?我不知道telerik,但是您应该调用某种DayListModel方法,以便可以更新UI。如果您使用MVVM light之类的框架,则它具有DisplayMemberPathPropertyChanged方法。

这是一个可行的示例:

ObservableObject

RaisePropertyChanged

MainWindowVM.cs

using GalaSoft.MvvmLight;
using System;
using System.Collections.Generic;

namespace WpfApp1
{
    public class MainWindowVM : ObservableObject
    { 
        private List<DayListModel> _DayList;
        public List<DayListModel> DayList
        {
            get { return _DayList; }
            set
            {
                if (value != _DayList)
                {
                    _DayList = value;
                    RaisePropertyChanged();
                }
            }
        }


        private DayListModel _DefaultSendDay;
        public DayListModel DefaultSendDay
        {
            get { return _DefaultSendDay; }
            set
            {
                if (value != _DefaultSendDay)
                {
                    _DefaultSendDay = value;
                    RaisePropertyChanged();
                }
            }
        }

        public MainWindowVM()
        {
            DayList = new List<DayListModel>();
            foreach (int i in Enum.GetValues(typeof(SendDays)))
            {
                DayListModel day = new DayListModel()
                {
                    Id = i,DayName = Enum.GetName(typeof(SendDays),i)
                };
                DayList.Add(day);
            }
            DayList = new List<DayListModel>(DayList);
        }
    }

    public enum SendDays
    {
        Maandag = 1,Dinsdag,Vandaag = 99
    }

    public class DayListModel
    {
        public int Id { get; set; }
        public string DayName { get; set; }
    }
}


屏幕截图:

Screenshot of a combobox and textblock displaying the selectd value

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。