我的代码非常适用于非常基本的WPF项目。
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid ShowGridLines="True">
<ColumnDefinition x:Name="LeftColumn"></ColumnDefinition>
</Grid>
但是,列定义行给出了一个错误:
错误1无法将类型为“ColumnDefinition”的实例添加到“UIElementCollection”类型的集合中。只允许使用'UIElement'类型的项目。
答案 0 :(得分:2)
你必须将它包含在ColumnDefinitions集合中。
<Grid Height="27">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
</Grid>
添加行定义的方式相同。
享受!
答案 1 :(得分:2)
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid ShowGridLines="True">
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="LeftColumn"></ColumnDefinition>
</Grid.ColumnDefinitions>
</Grid>
我认为这就是你要找的东西。
答案 2 :(得分:0)
在XAML中,这种表示法:
<Container>
<ContentItem />
</Container>
这是简写:
<Container>
<Container.Children>
<ContentItem />
</Container.Children>
</Container>
错误是网格将为子项获取UIElement项,而不是ColumnDefinition项。这是因为正在使用的简写符号中隐含<Container.Children>
。
正如其他答案所述,ColumnDefinition项目必须是<Grid.ColumnDefinitions>
的子项才能使XAML有效。但是,如果标记是这样的话,最好知道:
<Grid>
<ColumnDefinition />
<Grid.Children>
...
</Grid.Children>
</Grid>
然后你还会有一个属性'Children'被设置多次构建错误,因为它的XAML语法使得<Container.Children>
隐含在简写符号中。这就是<ColumnDefinition>
项需要显式包含在<Grid.ColumnDefinitions>
集合中的原因,否则编译器会尝试在隐含的<ColumnDefinition>
标记下使用<Grid.Children>
,该标记需要从UIElement派生的项目,因此错误。