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

标签 c# .net xaml

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

当然,该项目刚刚交给我,我们已经遇到了生产问题。我以前从未编写过 C# 语言,并且正在努力尝试以尽可能快的速度修复此问题。

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

我需要能够判断列表框何时为空(当有 0 个文件排队/填充时)。此功能在代码中由一对分别名为 ListItemControl.xamlListItemControl.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/

相关文章:

c# - 使用 Windows 应用商店应用程序设置 SendGrid

c# - 如何在泛型方法中有效地创建对象列表?

.net - 如何中止 HTTP 发布而不读取其完整内容(.NET REST 服务)

c# - WPF支持触摸屏还是多点触摸屏?

具有 InternalCall 属性的 C# 内部静态外部 - 内部还是外部?

c# - 如何在 WinRT XAML C# 中克隆 UIElement?

c# - 更改文本框文本时如何将选定的下拉列表索引设置为 0?

c# - 如何将 MEF(托管可扩展性框架)配置为仅加载已签名的程序集

xaml - window 电话 : how to change the Application style programmatically

c# - 通用Windows App C#-导航到同一页面的新实例时缓存页面的实例(和状态)