为了掌握 Windows Phone 8 和 XAML,我开始了一个简单的测试项目。我的数据透视视图中有一个 longlistselector,它在平面列表中显示数据条目;当用户想要从列表中删除项目时,他可以点击“选择”应用程序栏按钮,复选框会出现在列表中每一行的开头。为此,我处理“选择”应用程序栏按钮的点击事件,并将 longlistselector 的 and 设置Itemtemplate
为ListHeaderTemplate
数据模板,包括所需的复选框 - 我不知道这是否是这样做的方法,但它是有道理的大部头书。
不过,我的问题是,当显示包含复选框的 DataTemplate 时,会裁剪复选框,如下面的屏幕截图所示:
这是包含复选框的 DataTemplate 的 XAML:
<DataTemplate x:Key="ExpensesEditListTemplate">
<Grid HorizontalAlignment="Stretch" Width="420">
<Grid.RowDefinitions>
<RowDefinition Height="48" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="48" />
<ColumnDefinition Width="100" />
<ColumnDefinition Width="100" />
<ColumnDefinition Width="100" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<CheckBox
IsChecked="False"
Grid.Column="0" VerticalAlignment="Top" Margin="-4,0,0,0" HorizontalContentAlignment="Left"
/>
<TextBlock
Text="{Binding Date, StringFormat=d}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Grid.Column="1" Grid.ColumnSpan="1"
VerticalAlignment="Top" Margin="0, 4, 0, 0"/>
<TextBlock
Text="{Binding ExpenseCategory}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Grid.Column="2" Grid.ColumnSpan="1"
VerticalAlignment="Top" Margin="0, 4, 0, 0"/>
<TextBlock
Text="{Binding Amount,StringFormat=\{0:N2\}}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Grid.Column="3" Grid.ColumnSpan="1"
VerticalAlignment="Top" Margin="0, 4, 0, 0"/>
<TextBlock
Text="{Binding PaymentCategory}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Grid.Column="4" Grid.ColumnSpan="1"
VerticalAlignment="Top" Margin="0, 4, 0, 0"/>
</Grid>
</DataTemplate>
我已经尝试显式设置行高和列,但只有使用像“80”这样的特别大的值,我才能显示复选框(虽然浪费了很多屏幕空间),如下所示:
将复选框的宽度和高度显式设置为更小(如 20x20)也会导致复选框根本不显示。显然,我一定遗漏了一些关于 XAML 的基本知识,但我想不通!