【问题标题】:Binding each array element to a column in Datagrid将每个数组元素绑定到 Datagrid 中的列
【发布时间】:2014-01-16 07:13:29
【问题描述】:

我有一个对象,它有两个成员,一个是字符串,另一个是 ushort 数组。我需要在不同的列中显示数组中的每个元素。

<DataGrid ItemsSource="{Binding Results}" AutoGenerateColumns="True" /> 

数据网格绑定到视图模型:

public class ViewModel
{
     public ObservableCollection<ResultView> Results
     {
        get;
        set;
     }
}

public class ResultView
{
     public string From {};
     public ushort[] Data {};
}

编辑:

没有错误,现在发生的事情是我将 ushort 数组的 getter 更改为返回一个显示所有元素的大字符串,但我希望每个元素显示在不同的列中。

【问题讨论】:

  • 请更新您的问题以包含实际结果和任何错误

标签: c# wpf binding datagrid


【解决方案1】:

确保DataGridDataContextViewModel。如果是这样的话。 您必须更新类似于

的代码
public class ViewModel 
{
     private ObservableCollection<ResultView> _results;
     public ObservableCollection<ResultView> Results
     {
        get { 
        if(_results == null)
        { 
          _results = new ObservableCollection<ResultView>() { new ResultView() { From = "Sample 1" } };
        }  
         return _results; 
        }
     }
}

【讨论】:

  • 一切正常我可以在网格上看到结果,这不是我的实际代码,这只是一个最小化的代码。我希望在不同的列中显示 ResultView 数组的每个元素。是的,网格的数据上下文是视图模型,因为它继承自根元素。
【解决方案2】:

我更改了 ushort 数组的 getter 以返回一个显示所有元素的大字符串

这样做的问题是,将ushorts 的数组表示为单个字符串将导致值显示在一列中,因为字符串是单个变量。

如果您这样做是因为您在数值本身显示时遇到问题,则可以解决此问题。

但是,如果您希望将它们显示为字符串,则需要存储字符串集合,或者 char 可以工作。

AutoGenerateColumns 可能无法按照您的看法工作。这将显示它有权访问的所有属性,但不会遍历 array,例如,也无法为这些属性生成列。

我建议不要反刍答案,而是看他的:

How can I display array elements in a WPF DataGrid?.

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2018-10-19
    • 1970-01-01
    • 2016-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多