【发布时间】: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
编辑:问题是由于缺少 <data:DataGrid.Columns> 已解决,但第二个问题是如何绑定列?
有人可以给我解决方案吗?我的意思是我必须只使用 xaml(不是 c#)创建列并绑定它们。怎么做 ?
谢谢
【问题讨论】:
-
为什么需要单独声明列?
-
@Martin 它将在单独的列中单独显示数据。
-
对不起,我不明白。您是否希望有多个
DataGrid使用相同的列配置? -
@Martin 是的,但在 ViewModel 和 Model 中使用 c# 代码(尽可能简单的示例)。请
-
我打赌你的意思是没有代码...而且我们也不需要任何代码:当你想多次重用一个配置良好的
DataGrid时,最简单的要做的是将它放在UserControl中,然后在整个 xaml 中使用该控件。
标签: silverlight xaml data-binding binding datagrid