我有DataTemplate
项ListView
项。在这个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
,应用程序崩溃
当我试图获得所有的祖先或后代时,返回的列表也是空的。
答案 0 :(得分:1)
您是否尝试过ScrollViewer.ViewportWidth
?