【问题标题】:Setting VirtualizingStackPanel.IsVirtualizing in a Windows 8.1 Store App在 Windows 8.1 应用商店应用程序中设置 VirtualizingStackPanel.IsVirtualizing
【发布时间】:2015-04-07 00:17:20
【问题描述】:

我在 Windows 8.1 应用商店应用中有一个 XAML 页面。我为 ListView 设置了数据上下文,但我最初将它折叠起来。我想要做的是在使其可见之前切换 ListView 中某些元素的可见性。但它不会加载它们,除非它变得可见。因此,为了强制它加载项目,我试图将“IsVirtualizing”设置为 false,这样我就不必担心它(而且我不介意性能受到影响,因为我不会有那么多项目)。但是对于我看到的所有示例,我得到的只是

The property "IsVirtualizing" does not have an accessible setter.

不知道这里发生了什么。

这是相关的一段代码,去掉了其他内容。

<common:LayoutAwarePage
    x:Class="FlashMe.DeckView"
    DataContext="{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:FlashMe"
    xmlns:common="using:FlashMe.Common"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    >


        <ScrollViewer x:Name="deckScrollViewer" Grid.Row="1" VerticalScrollMode="Disabled" HorizontalScrollMode="Enabled" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled" Margin="0,15,0,0">
            <StackPanel x:Name="deckStackPanel" Orientation="Horizontal">
                <Grid Width="100" x:Name="MarginBuffer" />
                <ListView x:Name="cardsListViewDisplay" Visibility="Collapsed" SelectionMode="None" Width="500" ItemsSource="{Binding Path=FlashCardsAsList}" VirtualizingStackPanel.IsVirtualizing="False">
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <Border>
                                <StackPanel Orientation="Vertical" Width="490" Height="400" RightTapped="FlashCardRightClicked">
                                    <Grid Width="490" Height="200" Background="Gainsboro">
                                        <TextBlock Text="{Binding Path=Front}"
                                                   Foreground="Black" 
                                                   Style="{StaticResource GroupHeaderTextStyle}"
                                                   Margin="4,0,4,4"
                                                   FontWeight="SemiBold"
                                                   VerticalAlignment="Center"
                                                   HorizontalAlignment="Center"
                                                   TextWrapping="Wrap"
                                                   MaxWidth="410"/>
                                    </Grid>
                                    <Grid Width="500" Height="200" Background="{Binding ElementName=deckStackPanel, Path=DataContext.DeckColorBrush}">
                                        <TextBlock Text="{Binding Path=Back}"
                                                   Foreground="White" 
                                                   Style="{StaticResource GroupHeaderTextStyle}"
                                                   Margin="4,0,0,4"   
                                                   FontWeight="SemiBold"
                                                   VerticalAlignment="Center"
                                                   HorizontalAlignment="Center" 
                                                   TextWrapping="Wrap"
                                                   MaxWidth="410"/>
                                    </Grid>
                                </StackPanel>
                            </Border>
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>
            </StackPanel>
        </ScrollViewer>
</common:LayoutAwarePage>

【问题讨论】:

    标签: c# xaml windows-store-apps


    【解决方案1】:

    在 Windows 应用商店应用中,IsVirtualizing 属性是只读的。

    来自 MSDN 上 VirtualizingStackPanel.IsVirtualizingProperty 页面上的备注部分:

    VirtualizingStackPanel.IsVirtualizing 是一个非典型的附加属性 因为它没有 Set 访问器,因此不是真正的 XAML 带有标记用法的附加属性。反而, VirtualizingStackPanel.IsVirtualizing 充当哨兵,借此 子元素可以查询 VirtualizingStackPanel 父元素,并且 确定是否正在使用虚拟化。 ...

    【讨论】:

    • 我在阅读 MSDN 页面时完全错过了该部分。谢谢!
    猜你喜欢
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多