2

私は Java 開発者であり、別のチームから Web プロジェクトを継承し、その開発者だけが立ち上げて辞めました。プロジェクトの大部分は Spring、JSP、および jQuery で作成されていますが、Silverlight XAP であるコンポーネントが 1 つあります。

もちろん、プロジェクトは私に渡されたばかりで、すでに生産上の問題が発生しています。私はこれまで C# を一筆も書いたことがありませんでした。この問題をできる限り早く修正しようと奮闘しています。

これは Microsoft VS 2010 (Pro Edition) C# ソリューション プロジェクトであり、XAML ファイルと CS ファイルで構成されるプレゼンテーション層を備えています。修正が必要なコンポーネントは、ユーザーがマシンから 1 つ以上のファイルを選択して「キュー」(リストボックス) に配置できるようにするファイル アップローダーです。次に、ボタンを 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# のいとこに適用すると (私が聞いたように)、これは myListItemControlが Microsoft 組み込み型の を拡張する社内クラスのように見えSystem.Windows.Controls.UserControlます。さらに、UserFileアップロードする必要があるファイルまたはファイルのセットを表すプロパティ (別の自家製のタイプであると思います) があること。

最初に、健全性チェックとして:誰かが上記の仮定を確認できますか?!?

まず、Java/Swing ランドでは、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>
4

2 に答える 2

2

更新されたスニペットは、XAML の適切な部分のようですItemsControl。アイテムのコレクションをレンダリングするための汎用リピーター コントロールである があります。私がまだ見ていないのは、項目が追加された場所ですが、それはコードの別の場所にある可能性があります。

ただし、 にItemsControlは名前が付けられているため、次のようにアクセスできます。

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

キューの長さに正確にアクセスしようとしている場所はどこですか? ItemsControlこれは、が定義されているウィンドウのコード ビハインドにある必要があります。

于 2012-04-19T10:48:32.407 に答える
1

通常、コントロールはIEnumerableインターフェイスList<Something>を実装するコントロールを実装または継承します。

完全なマークアップを提供するわけではありませんが、配列や辞書などの要素の数を示す、.Lengthまたはなどのプロパティを公開するコードが以下にあると思います。.Items.Count

正確なプロパティ名は、表示できないコードにどのように実装されているかによって異なるため、ここでは必然的に一般的です。

于 2012-04-19T10:32:32.027 に答える