0

こんにちは、完全に機能するプログレスバーを備えた ListBoxItem を ListBox に追加する方法を知りたいと思いました。

状況は次のとおりです。

アクションログとして使用されるリストボックスを取得しました。プログラムにダウンロード機能があり、ダウンロードを開始するとログに表示されます。

ここで、ダウンロードの進行状況を示すプログレスバーをログに追加したいと考えました。

私は自分で試しましたが、あまり成功しませんでした:

        ListBoxItem lbitem = new ListBoxItem();
        ProgressBar pb1 = new ProgressBar();
        pb1.Width = 100;
        pb1.Height = 20;

        lbitem.Content = "Downloading file - " + pb1;

        listbox1.Items.Add(lbitem);

しかし、これで私が実際に何をしようとしているのかがわかります。

誰かがこれで私を助けてくれることを願っています、

よろしく、

ジェイク

4

3 に答える 3

0

I'm fairly new to C# myself, so I may not have the full/right answer, but here is what I did in a similar situation.

Firstly, If you're using a progress bar, then you need to know the total number of items you're loading so you can tell the progress bar what the maximum value will be. Then you set up a loop to load the listbox with data and incrementing the count of the progress bar.

A few words about the loop:
If the progress bar count exceeds the maximum value you have set, you will get a run time error.
If you are loading a LOT of items into the listbox, then don't update the progress bar every single time, rather do it every 10, 20, 50, 100 items (you shouldn't really have a listbox with thousands of items anyway, it's pretty inefficient).
You may need to refresh the screen display so the user can see the progress bar in action if you're in a tight loop.

Here's a little sample "air code":

pb1.Maximum = maxNumberItemsToLoad;
for (int i==0; i<maxNumberItemsToLoad; i++)
{
   lbItem = "String to add to Listbox"; //Read/Get your data to put into listbox here
   listbox1.Items.Add(lbItem);
   pb1.Increment(1);
   //May need to do a this.Refresh(); here if pb1 does not update
}
于 2012-05-03T00:16:03.947 に答える
0

あなたのコードで:

...
lbitem.Content = pb1;
...

XAML では、ListBox のインスタンスで次のようにします。

<ListBox ...>
    <ListBox.ItemTemplate>
        <DataTemplate>
             <StackPanel Orientation="Horizontal">
                 <TextBlock Text="Downloading file - " VerticalAlignment="Center"/>
                 <ContentPresenter Content="{Binding }"/>
             </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
....
</ListBox>

より良い方法は、各項目の進行状況 (つまり、進行状況バーの値) を保持するリストを作成することProgressBarですDataTemplate

于 2012-05-06T17:25:52.883 に答える
0

ListViewを追加して使用することをお勧めしProgressBarます。

これを見てください:より使いやすいListView

于 2012-05-21T14:11:00.587 に答える