1

我有一个DataTemplatefor ListViewitems。在这个内部DataTemplate,我有一个Grid控件,我需要它的实际宽度,ListView但没有 ScrollBar 的宽度,因为这样一些内容会在滚动条后面。我不能使用ListViewItems 的宽度,因为我是用这个模板定义的。我在这里看到了一些带有祖先的 WPF 的答案,但我认为这在 WinRT 中是不可能的。

编辑:我尝试获取列表视图的滚动查看器 ViewportWidth。这是我得到的代码

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

这是我的列表视图正在使用的 DataTemplate,它位于单独的 xaml 文件中。

转换器如下所示:

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

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

4

1 回答 1

1

你试过ScrollViewer.ViewportWidth吗?

于 2013-02-01T01:46:57.817 回答