【问题标题】:the type DataGrid doesn't support direct ContentDataGrid 类型不支持直接内容
【发布时间】:2014-06-01 13:47:12
【问题描述】:

我是 xaml 和 c# 初学者,我在 silverlight 应用程序中遇到了这个错误,我正在尝试使用 xaml 创建列(我不必使用 c# 或任何动态的东西)。

这是我的代码:

<UserControl x:Class="DEV_CENTER.ProgramGrid"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"
    xmlns:dataprimitives="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Data"
    xmlns:vm="clr-namespace:ViewModel;assembly=ViewModel"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">
    <UserControl.Resources>
        <vm:ProgramViewModel x:Key="ProgramViewModel"/>
    </UserControl.Resources>
    <data:DataGrid x:Name="gridPrograms"
        Grid.Row="0"
        AutoGenerateColumns="False"
        ItemsSource="{Binding Path=ListPrograms }"
        IsReadOnly="True"
        DataContext="{StaticResource ProgramViewModel}">
        <data:DataGridTextColumn Header="c1"
            Binding="{Binding Version}"
            Width="2*"/>
        <data:DataGridTextColumn Header="c2"
            Binding="{Binding Live}"
            Width="2*"/>
        <data:DataGridTextColumn Header="c3"
            Binding="{Binding DateCreation}"
            Width="2*"/>
        <data:DataGridTextColumn Header="..." Width="*"/>
        </data:DataGrid.Columns>
    </data:DataGrid>
</UserControl>

我得到错误:the type DataGrid doesn't support direct Content

编辑:问题是由于缺少 &lt;data:DataGrid.Columns&gt; 已解决,但第二个问题是如何绑定列? 有人可以给我解决方案吗?我的意思是我必须只使用 xaml(不是 c#)创建列并绑定它们。怎么做 ? 谢谢

【问题讨论】:

  • 为什么需要单独声明列?
  • @Martin 它将在单独的列中单独显示数据。
  • 对不起,我不明白。您是否希望有多个 DataGrid 使用相同的列配置?
  • @Martin 是的,但在 ViewModel 和 Model 中使用 c# 代码(尽可能简单的示例)。请
  • 我打赌你的意思是没有代码...而且我们也不需要任何代码:当你想多次重用一个配置良好的DataGrid时,最简单的要做的是将它放在UserControl 中,然后在整个 xaml 中使用该控件。

标签: silverlight xaml data-binding binding datagrid


【解决方案1】:

该消息意味着您不能在DataGrid 的开始和结束标记之间放置任何内容,只要您没有“寻址”DataGrid 属性,您就缺少开始标记&lt;data:DataGrid.Columns&gt;

<data:DataGrid ...>
    <data:DataGrid.Columns>
       ...
    </data:DataGrid.Columns>
</data:DataGrid>

【讨论】:

  • 但是怎么绑定呢? (请给我一些用于绑定列的示例)?
  • 我已添加 第一个问题已解决,但现在必须进行绑定?我的意思是我必须仅使用 xaml(不是 c#)创建列并绑定它们。该怎么做?
猜你喜欢
  • 2016-03-08
  • 1970-01-01
  • 2020-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-21
  • 1970-01-01
相关资源
最近更新 更多