C#:System.Windows.Controls.UserControl作为列表框

C#:System.Windows.Controls.UserControl作为列表框,c#,.net,xaml,C#,.net,Xaml,我是一名Java开发人员,从另一个团队继承了一个web项目,该团队的唯一开发人员升级并退出。该项目的大部分是用Spring、JSP和jQuery编写的,但是有一个组件是Silverlight XAP 当然,这个项目刚刚交给我,我们已经有生产问题了。我以前从未写过一点C#,我正努力尝试尽快解决这个问题 这是一个Microsoft VS 2010(Pro Edition)C#解决方案项目,其表示层由XAML和CS文件组成。需要修复的组件是一个文件上传器,它允许用户从机器中选择1+个文件,并将它们放入

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

当然,这个项目刚刚交给我,我们已经有生产问题了。我以前从未写过一点C#,我正努力尝试尽快解决这个问题

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

我需要能够知道列表框何时为空(当有0个文件排队/填充它时)。此功能在代码中由一对XAML/CS文件表示,分别名为
ListItemControl.XAML
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
(listbox)类型或将其子类化,该类型具有内置的方法/模型来确定在任何给定时间填充它的项的数量

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

在这个CS文件中,我没有看到任何确定数据大小/长度/计数的方法。当我F12(转到定义)
UserControl
时也是如此

本质上,我在这里问:如何查询这个listbox组件中填充了多少项?提前感谢您在正确的方向上所做的任何推动

编辑:下面是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>

通常,
列表
控件将实现或继承实现接口的控件

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


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

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

但是,由于
ItemsControl
具有名称,因此您可以访问:

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

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

您的假设似乎是正确的,但这里缺少一些数据,特别是XAML文件的内容。大部分实例化都在那里进行。我猜我们将看到一个控件声明,其中包含一个datatemplate,指定每个项将由一个ListItemControl表示。这个列表框就是你想要的。ListItemControl只是ListBox中的一个条目,因此您自然无法从中获取数据的长度。我的印象是控件引用了列表框作为一个整体。这是我遗漏的片段,还是我仍然在错误的地方寻找?这是我在XAML文件中找到的字符串“list”的唯一引用。谢谢@Widor-我将获取必要的XAML并编辑我的原始问题。是的-此文件是
FileUploader.XAML
,我需要更改
FileUploader.XAML.cs
。谢谢你的帮助@Avner-我知道这是一个简单的问题,但是在凌晨4点被叫去工作,用一种你以前从未编写过的语言来解决生产问题……这很令人沮丧。再次感谢!最好的学习方法,对吗?什么,不?不,不,不是。我感觉到你的痛苦