假设我在C#这个结构的定义:

    public struct TimeSlotInfo
    {
        public int TimeSlotID;
        public int StartMin;
        public int CalcGridColumn;
        public string BackgroundCol;
        public bool ToDisable;
    }

和我有一个LINQ查询像这样:

var TimeSlotsInfo = 
from ts in datacon.TimeSlots
select new TimeSlotInfo
{
    TimeSlotID = ts.TimeSlotID,
    StartMin = ts.StartMin,
    CalcGridColumn = CalcTimeSlotGridColumn(ts.StartMin),
    BackgroundCol = ts.ColorName,
    ToDisable = false
};

如果我设置的ItemsSource属性说列表框,如下:

lstBox.ItemsSource = TimeSlotsInfo;

现在,如何设置的结合路径从上述查询结果引用“BackgroundCol”字段?

我试过{绑定路径= TimeSlotInfo.BackgroundCol},{绑定路径= TimeSlotInfo / BackgroundCol},最后{绑定路径= BackgroundCol} ...他们都不是工作..

谁能帮助?我试图简化的例子越好。希望我的问题是非常明显的。 由于事先。

有帮助吗?

解决方案

最后一个是正确的({结合路径= BackgroundCol}) - 但是,可以不结合字段,可以仅结合性质。定义类是:

class TimeslotInfo {
    public int TimeslotId {get; set;}
    /* Etc... */
}

其他提示

不仅要使用属性绑定,保罗说,但一般而言,您应避免公众字段的在第一位置。

此外,这种感觉并不像它应该是一个结构 - 你真的想值类型的语义?有疑问时,你应该默认为C#创建类 - 这是相当罕见的,你的真正的想一个struct

最后,即使你的没有的希望有一个结构,你应该总是让结构不变。你几乎肯定会具有可变结构意想不到的效果。这一切都明确界定,并有很好的理由,但它可能不是你所期望的行为。可变结构是恶

如果您希望您的条款显示无论是存储在BackgroundCol,你可以设置你的列表框,以“BackgroundCol”中的DisplayMemberPath属性。如果这不是你想达到什么样的,请更具体。

希望这有助于!!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top