我有一个DataTemplate
for ListView
items。在这个内部DataTemplate
,我有一个Grid
控件,我需要它的实际宽度,ListView
但没有 ScrollBar 的宽度,因为这样一些内容会在滚动条后面。我不能使用ListViewItem
s 的宽度,因为我是用这个模板定义的。我在这里看到了一些带有祖先的 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
并且应用程序崩溃,返回列表也是空的。