如何在没有ListView滚动条的情况下获取ActualWidth

时间:2013-02-01 00:48:08

标签: c# xaml windows-runtime windows-store-apps winrt-xaml

我有DataTemplateListView项。在这个DataTemplate中,我有一个Grid控件,我需要ListView的实际宽度,但没有ScrollBar的宽度,因为有些内容会在滚动条后面。我无法使用ListViewItem的宽度,因为我使用此模板定义它。我在这里看到了WPF与Ancestors的一些答案,但我认为在WinRT中这是不可能的。

编辑: 我试过获取listview的scrollviewer ViewportWidth。这是我得到的代码

<DataTemplate x:Key="ListViewTemplate">
      <Grid Width="{Binding RelativeSource={RelativeSource Self}, Converter={StaticResource ContainerViewportWidthConverter}}">
            <Grid.RowDefinitions>...

这是我的listview正在使用的DataTemplate,它位于一个单独的xaml文件中。

转换器看起来像这样:

        if (!(value is FrameworkElement)) return null;
        var ctrl = value as FrameworkElement;
        var scrollViewer = ctrl.GetFirstAncestorOfType<ScrollViewer>();
        return scrollViewer.ViewportWidth;

scrollViewer始终变为null,应用程序崩溃 当我试图获得所有的祖先或后代时,返回的列表也是空的。

1 个答案:

答案 0 :(得分:1)

您是否尝试过ScrollViewer.ViewportWidth