在WP8 XAML布局中显示时,longlistselector中的清单被裁剪

时间:2013-06-08 18:30:21

标签: xaml checkbox windows-phone-8 longlistselector

尝试掌握Windows Phone 8和XAML,我开始了一个简单的测试项目。我在我的数据透视图中有一个longlistselector,显示一个平面列表中的数据条目;当用户想要从列表中删除项目时,他可以点击“选择”应用程序栏按钮,并且复选框出现在列表中每行的开头。为此,我处理“选择”应用程序栏按钮的点击事件,并将longlistselector的ItemtemplateListHeaderTemplate设置为包含所需复选框的数据模板 - 我不知道这是否是这样做的方式,但它对我有意义。

我的问题是,当显示包含复选框的DataTemplate时,复选框被裁剪,如此屏幕截图所示:

enter image description here

以下是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”这样的特别大的值我才会出现复选框(虽然有大量浪费的屏幕空间),如下所示:< / p>

enter image description here

将复选框宽度和高度显式设置为较小的值(如20x20)也会导致复选框根本不显示。显然,我必须遗漏一些关于XAML的基本信息,但我无法弄明白!

1 个答案:

答案 0 :(得分:0)

显然,这是设置&#34;正确&#34;保证金价值。我最终直接在页面上粘贴我的<Grid></Grid>代码并直观地编辑网格以正确对齐控件。以下是生成的XAML代码:

<DataTemplate x:Key="ExpensesEditListTemplate">
    <Grid HorizontalAlignment="Stretch" Width="420">
        <Grid.RowDefinitions>
            <RowDefinition Height="64" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="48" />
            <ColumnDefinition Width="90" />
            <ColumnDefinition Width="90" />
            <ColumnDefinition Width="90" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <CheckBox 
            IsChecked="{Binding Ischecked}" 
            Grid.Column="0" VerticalAlignment="Top" Margin="-8,-18,0,0" HorizontalContentAlignment="Left"
            Checked="CheckBox_Checked" Unchecked="CheckBox_Checked"
            />
        <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>

然而,这对我来说仍然是一个谜 - Margin="-8,-18,0,0"如何成为对齐复选框的正确值?为什么忽略显式设置的复选框大小?我想这是一些我不知道的默认值。