【问题标题】:Silverlight make a column bound to a array item editableSilverlight 使绑定到数组项的列可编辑
【发布时间】:2017-09-08 12:08:01
【问题描述】:

我的 Silverlight 应用程序中有一个DataGrid,它绑定到一个对象数组。由于列是可变的,我将它们中的每一个绑定到一个数组项:

我的对象:

public class TravelTimeItem
{        
    public string From { get; set; }
    public int[] Times { get; set; }
}

我用它来构建我的网格:

grdTravelTime.Columns.Clear();

grdTravelTime.Columns.Add(new DataGridTextColumn() { 
    Binding = new Binding("From")                
});

for (int i=0; i < amountOfColumns; i++)
    grdTravelTime.Columns.Add(new DataGridTextColumn() 
    { 
        Binding = new Binding("Times[" + i.ToString() + "]"),
        Header = (i + 1).ToString()
    });

grdTravelTime.AutoGenerateColumns = false;
grdTravelTime.IsReadOnly = false;
grdTravelTime.ItemsSource = GetItems();  

上面的代码正在运行,我可以看到所有数组值在网格中正确显示,但我需要这些值是可编辑的。绑定到简单字符串属性的“From”列是可编辑的,但绑定到数组项的其他列不可编辑。

如何使这些列可编辑?考虑到每次的列数可能不同,是否还有其他选项可以绑定此列。

【问题讨论】:

    标签: c# wpf silverlight


    【解决方案1】:

    如何使这些列可编辑?

    您需要将int 替换为具有公共设置器属性的自定义类型:

    public class TravelTimeItem
    {
        public string From { get; set; }
        public YourType[] Times { get; set; }
    }
    
    public class YourType
    {
        public int Value { get; set; }
    }
    ...
    for (int i = 0; i < amountOfColumns; i++)
        grdTravelTime.Columns.Add(new DataGridTextColumn()
        {
            Binding = new Binding("Times[" + i.ToString() + "].Value"),
            Header = (i + 1).ToString()
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-14
      • 2012-10-25
      • 2017-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多