私はアイテムのDataTemplate
ために持っていListView
ます。この中に、実際の幅が必要なコントロールがありますが、スクロールバーの幅は必要ありDataTemplate
ません。これは、一部のコンテンツがスクロールバーの背後にあるためです。このテンプレートで定義しているので、sの幅を使用できません。ここで、祖先を使用したWPFについていくつかの回答を見ましたが、WinRTではそれは不可能だと思います。Grid
ListView
ListViewItem
編集:リストビューの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
なり、すべての祖先または子孫を取得しようとするとアプリがクラッシュし、返されるリストも空になります。