我是一名 Java 开发人员,他从另一个团队继承了一个 Web 项目,而该团队的唯一开发人员升级并退出了。该项目的大部分内容是用 Spring、JSP 和 jQuery 编写的,但有一个组件是 Silverlight XAP。
当然,该项目刚刚交给我,我们已经遇到了生产问题。我以前从未编写过 C# 语言,并且正在努力尝试以尽可能快的速度修复此问题。
这是一个 Microsoft VS 2010(专业版)C# 解决方案项目,具有由 XAML 和 CS 文件组成的表示层。需要修复的组件是文件 uploader ,它允许用户从计算机中选择 1+ 个文件并将它们放入“队列”(列表框)中。然后,只需单击一个按钮,所有“排队”的文件就会上传到我们的服务器。
我需要能够判断列表框何时为空(当有 0 个文件排队/填充时)。此功能在代码中由一对分别名为 ListItemControl.xaml
和 ListItemControl.xaml.cs
的 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# 领域中的 ListItemControl/UserControl 等效项是什么?
在此 CS 文件中,我没有看到任何确定数据大小/长度/计数的方法。当我 F12(转到定义)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>
最佳答案
更新后的代码片段似乎是 XAML 的正确部分 - 您拥有 ItemsControl
,它是用于呈现项目集合的通用重复器控件。我仍然看不到添加项目的位置,但这可能位于代码中的其他位置。
但是,由于 ItemsControl
已被赋予名称,因此您可以访问它:
ItemCollection items = icFiles.Items;
int count = items.Count;
您到底想在哪里访问队列长度?这需要位于定义 ItemsControl
的窗口的代码隐藏中。
关于C#:System.Windows.Controls.UserControl 作为列表框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10226121/