如何为此数据模板定义网格结构?

时间:2014-04-09 11:26:47

标签: wpf xaml mvvm

我有以下原型

中描述的数据模板

enter image description here

线条就在那里作为指南,它们没有画出来。

我使用了以下代码并且悲惨地失败了

<DataTemplate DataType="{x:Type vm:ViewModel}">
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="1*"/>
        <RowDefinition  Height="1*" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="2*" />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>

    <TextBlock Grid.Row="1" Grid.Column="1" 
                Text="{Binding Name}" />

    <Button Grid.Row="1" Grid.Column="2" Content="Update" />

    <TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding Description}" />
</Grid>
</DataTemplate>

它重叠了一切,看起来很有趣。帮助我理解这一点。我认为左列的宽度2 *和右列的1 *意味着左列的宽度是右列的两倍。这不是真的吗?

2 个答案:

答案 0 :(得分:1)

当你从0开始时,看起来你从1开始计算Columns / Rows数字。另外,如果我没有错,Button应该跨越2行:

<Grid>
   <Grid.RowDefinitions>
      <RowDefinition/>
      <RowDefinition/>
   </Grid.RowDefinitions>
   <Grid.ColumnDefinitions>
      <ColumnDefinition Width="2*" />
      <ColumnDefinition />
   </Grid.ColumnDefinitions>
   <TextBlock Text="{Binding Name}" />
   <Button Grid.Column="1" Grid.RowSpan="2" Content="Install" />
   <TextBlock Grid.Row="1" Text="{Binding Description}" />
</Grid>

答案 1 :(得分:1)

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="1*"/>
        <RowDefinition Height="1*" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="2*" />
        <ColumnDefinition Width="1*" />
    </Grid.ColumnDefinitions>

    <TextBlock Grid.Row="0" Grid.Column="0" 
                Text="{Binding Name}" />

    <Button Grid.Row="0" Grid.Column="1" Grid.RowSpan="2" Content="Update" />

    <TextBlock Grid.Row="1" Grid.Column="0" Text="{Binding Description}" />
</Grid>

为什么你会有身高= *
汽车对我来说更有意义 还有一个固定内容的按钮 - 为什么不是自动宽度