在WinRT中选中时,阻止ListView切断ListViewItem的第一个字母

时间:2013-06-30 15:45:32

标签: windows-runtime winrt-xaml

Xaml/C# WinRT应用程序中,只要选择了ListViewItem,左侧的第一个字母就会被删除。我该如何防止这种情况?

<ListView>
    <ListViewItem Content="Hello World"/>
</ListView>

未选中且已满:

Unselected and Full

已选中和已截断:

Selected and Truncated

2 个答案:

答案 0 :(得分:2)

您可以在ListViewItem本身的项目中应用保证金,如下所示,这将停止切断。或者,您可以使用ContentTemplate作为第二个示例。

示例1:

<ListView>
    <ListViewItem>
        <TextBlock Text="Hello World" Margin="5,0,0,0"/>
    </ListViewItem>
</ListView>

示例2:

<ListView>
    <ListViewItem Content="Hello World!">
        <ListViewItem.ContentTemplate>

            <DataTemplate>
                <TextBlock Text="{Binding}" Margin="5,0,0,0"/>
            </DataTemplate>

        </ListViewItem.ContentTemplate>
    </ListViewItem>
</ListView>

答案 1 :(得分:0)

作为Brandon Scott的answer的后续内容,如果您不想将此内联应用于内联,则可以将此行为设置为样式,然后将该样式应用于单个列表项,如此

<Application.Resources>
    <ResourceDictionary>
        <Style x:Key="ListViewItemMagin" TargetType="ListViewItem">
            <Setter Property="ContentTemplate">
                <Setter.Value>
                    <DataTemplate>
                        <TextBlock Text="{Binding}" Margin="5,0,0,0"/>
                    </DataTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ResourceDictionary>
</Application.Resources>

然后,将样式应用于列表视图项

<ListView>
    <ListViewItem Content="Hello World" Style="{StaticResource ListViewItemMagin}"/>
</ListView>

如果要在默认情况下启用此功能,则可以省略样式上的x:Key属性,它将自动应用于与TargetType匹配的任何元素;像这样:

<Style TargetType="ListViewItem">
    <Setter Property="ContentTemplate">
        <Setter.Value>
            <DataTemplate>
                <TextBlock Text="{Binding}" Margin="5,0,0,0"/>
            </DataTemplate>
        </Setter.Value>
    </Setter>
</Style>