DataGridColumn绑定失败

时间:2015-10-25 14:28:38

标签: wpf binding datagrid

这是我的DataGrid;

    <DataGrid Visibility="Visible"
        Grid.Row="1"
        SelectionUnit="CellOrRowHeader"
        Name="dataGrid"
        SelectionMode="Single"
        ItemsSource="{Binding collcection}">
        <DataGrid.ContextMenu>
            <ContextMenu>
                <MenuItem Command="Copy" Click="MenuItem_Click_1"/>
            </ContextMenu>
        </DataGrid.ContextMenu>
        <DataGrid.Columns>
            <DataGridTemplateColumn Header="Select">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <CheckBox 
                            x:Name="cbRunRobot"
                            IsChecked="{Binding Value}"
                            Width="60"
                            Height="25"
                            Checked="cbRunRobot_Checked"
                            Unchecked="cbRunRobot_Unchecked"
                            Margin="25,0,0,0" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>

        </DataGrid.Columns>
    </DataGrid>

查看型号:

list<MyData> collcection;
public class MyData
{
   public string Name;
   public string Id;
}

我尝试添加此Column

<DataGridColumn Binding="{Binding Name}" Header="Name" Width="180"/>

得到了这个错误:

错误1类型&#34; DataGridColumn&#34;是抽象的,必须包含一个明确的值。

错误2成员&#34;绑定&#34;无法识别或无法访问。

2 个答案:

答案 0 :(得分:1)

DataGridColumn是一个抽象类,意味着它无法实例化。这同样适用于DataGridBoundColumn

您的选择是:

  • DataGridCheckBoxColumn表示布尔值
  • DataGridComboBoxColumn了解可枚举值
  • DataGridHyperlinkColumn代表Uri值
  • DataGridTemplateColumn通过定义您自己的单元格模板来显示任何类型的数据
  • DataGridTextColumn显示文字值

看起来DataGridTextColumn正是您正在寻找的。

答案 1 :(得分:0)

嗨,我可以建议你下一个:

  1. 绑定到ObservableCollection而不是列表。
  2. 使您的MyData模型实现InotifyPropertyChanged。
  3. 使MyData模型中的每个绑定涉及属性以触发OnPropertyChanged事件。
  4. 以下是工作示例的链接:How to Display and select items in a Datagrid ComboBox with WPF C#, using MVVM
  5. 的问候,