C#:System.Windows.Controls.UserControl作为列表框
我是一名Java开发人员,从另一个团队继承了一个web项目,该团队的唯一开发人员升级并退出。该项目的大部分是用Spring、JSP和jQuery编写的,但是有一个组件是Silverlight XAP 当然,这个项目刚刚交给我,我们已经有生产问题了。我以前从未写过一点C#,我正努力尝试尽快解决这个问题 这是一个Microsoft VS 2010(Pro Edition)C#解决方案项目,其表示层由XAML和CS文件组成。需要修复的组件是一个文件上传器,它允许用户从机器中选择1+个文件,并将它们放入“队列”(列表框)中。然后,只需点击一个按钮,所有“排队”的文件就会上传到我们的服务器上 我需要能够知道列表框何时为空(当有0个文件排队/填充它时)。此功能在代码中由一对XAML/CS文件表示,分别名为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+个文件,并将它们放入
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点被叫去工作,用一种你以前从未编写过的语言来解决生产问题……这很令人沮丧。再次感谢!最好的学习方法,对吗?什么,不?不,不,不是。我感觉到你的痛苦