1

私はアイテムのDataTemplateために持っていListViewます。この中に、実際の幅が必要なコントロールがありますが、スクロールバーの幅は必要ありDataTemplateません。これは、一部のコンテンツがスクロールバーの背後にあるためです。このテンプレートで定義しているので、sの幅を使用できません。ここで、祖先を使用したWPFについていくつかの回答を見ましたが、WinRTではそれは不可能だと思います。GridListViewListViewItem

編集:リストビューのscrollviewerViewportWidthを取得しようとしました。これが私が得たコードです

<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 に答える