繁体   English   中英

如何在WP 8.1应用程序中获取xaml ListView的行号?

[英]How do you get rownumbers for a xaml ListView in a WP 8.1 App?

为什么我的行号不显示? 如果我在WP SilverLight应用程序和ListBox中使用此功能,则效果很好。 但是使用ListView却没有。

这是我的代码:

 public object Convert(object value, Type targetType, object parameter, string language)
    {
        var dependencyObject = value as DependencyObject;
        var item = FindFirstParentOfType<ListView>(dependencyObject);

        if (item == null)
            return null;

        var listView = (ListView)ItemsControl.ItemsControlFromItemContainer(item);
        if (listView == null)
            return null;

        return listView.IndexFromContainer(item) + 1;
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        throw new NotImplementedException();
    }

    private static T FindFirstParentOfType<T>(DependencyObject dependencyObject)
        where T : DependencyObject
    {
        while (true)
        {
            if (dependencyObject == null)
                return null;

            var parent = VisualTreeHelper.GetParent(dependencyObject);

            var findFirstParentOfType = (parent as T);

            if (findFirstParentOfType != null)
                return findFirstParentOfType;

            dependencyObject = parent;
        }
    }

在ListView的xaml页面上,我这样做:

 <ListView ItemsSource="{Binding ObjectsList}">
                        <ListView.ItemTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent},
                                        Converter={StaticResource ListViewItemIndexConverter}, Mode=OneTime}"
                                               Foreground="White" 
                                               FontSize="40" />
                                    <TextBlock Text="{Binding Name}" />

                                </StackPanel>
                            </DataTemplate>
                        </ListView.ItemTemplate>
                    </ListView>

对我忘记或做错的事情有任何想法吗?

您的Convert方法错误。

在寻找FindFirstParentOfType<ListView> ,它应该是FindFirstParentOfType<ListViewItem>

该方法应如下所示:

public object Convert(object value, Type targetType, object parameter, string language)
{
    var dependencyObject = value as DependencyObject;
    var item = FindFirstParentOfType<ListViewItem>(dependencyObject);

    if (item == null)
        return null;

    var listView = (ListView)ItemsControl.ItemsControlFromItemContainer(item);
    if (listView == null)
        return null;

    return listView.IndexFromContainer(item) + 1;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM