2

我是一名 Java 开发人员,他从另一个团队继承了一个 Web 项目,该团队的唯一开发人员升级并退出。该项目的大部分内容是用 Spring、JSP 和 jQuery 编写的,但是有一个组件是 Silverlight XAP。

当然,该项目刚刚交给我,我们已经遇到了生产问题。我以前从来没有写过一点 C#,现在我正争先恐后地尝试尽快解决这个问题。

这是一个 Microsoft VS 2010 (Pro Edition) C# 解决方案项目,具有由 XAML 和 CS 文件组成的表示层。需要修复的组件是一个文件上传器,它允许用户从他们的机器中选择 1+ 个文件并将它们放在“队列”(列表框)中。然后,只需单击一个按钮,所有“排队”的文件都会上传到我们的服务器。

我需要能够判断列表框何时为空(当有 0 个文件排队/填充它时)。此功能在代码中由名为ListItemControl.xaml和的 XAML/CS 文件对表示ListItemControl.xaml.cs

这是 CS 文件的开头:

namespace silv.Uploader
{
    public partial class ListItemControl : UserControl
    {
        private UserFile UserFile { get { return (UserFile)this.DataContext; } }

        public ListItemControl()
        {
            InitializeComponent();

            ...

将 Java 概念应用于它的 C# 表亲(正如我被告知的那样),这看起来像是我ListItemControl的内部类,扩展了 Microsoft 内置类型的System.Windows.Controls.UserControl. 此外,它有一个UserFile属性(我假设它是另一种本土类型),表示需要上传的一个文件或一组文件。

所以首先,作为一个健全的检查:有人可以确认上面的假设吗?!?

首先,在 Java/Swing-land 中,您将实例化或子类化一个JList(列表框)类型,该类型具有内置方法/模型来确定在任何给定时间填充它的项目数。

C#-land 中的 ListItemControl/UserControl 等价物是什么?

在这个 CS 文件中,我没有看到任何确定数据大小/长度/计数的方法。当 I F12 (Go to Definition) 时相同UserControl

本质上,我在这里问:如何查询此列表框组件以获取填充的项目数?在此先感谢您在正确方向上的任何推动...

编辑:下面是我认为负责初始化此列表框的 XAML 片段:

<ScrollViewer Grid.Row="1" x:Name="svFiles" IsEnabled="True"     ScrollViewer.VerticalScrollBarVisibility="Visible" Margin="0,1,18,252">
    <StackPanel x:Name="stkMain" Orientation="Vertical" VerticalAlignment="Stretch">
        <ItemsControl  x:Name="icFiles" KeyUp="ScrollViewer_KeyUp" >
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <local:ListItemControl ScrollViewer.VerticalScrollBarVisibility="Visible" />
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </StackPanel>
</ScrollViewer>
4

2 回答 2

2

更新后的代码段似乎是 XAML 的正确部分 - 您拥有ItemsControl,这是一个用于呈现项目集合的通用转发器控件。我仍然没有看到添加项目的位置,但这可能在代码中的其他地方。

但是,由于ItemsControl给定了一个名称,因此您可以访问它:

ItemCollection items = icFiles.Items;
int count = items.Count;

您究竟在哪里尝试访问队列长度?这需要在ItemsControl定义的窗口的代码隐藏中。

于 2012-04-19T10:48:32.407 回答
1

通常,List<Something>控件将实现或继承自实现IEnumerable接口的控件。

您没有提供完整的标记,但我希望下面有更多代码公开一些属性,例如.Lengthor.Items.Count会告诉您数组、字典等中的元素数量。

我在这里必须笼统,因为确切的属性名称将取决于它在我们看不到的代码中的实现方式。

于 2012-04-19T10:32:32.027 回答