6

特定のパスにあるすべてのファイルを表示する必要があります。ファイルの詳細 (名前、サイズ、拡張子など) のテキストブロックを含むユーザー コントロールを作成しました。このコントロールは均一グリッドの子になります。

問題は、uniformgrid が 5x5 で、25 個を超えるファイルがある場合、26 番目の要素が表示されないことです。

知りたいのですが、均一なグリッドのコンテンツをスクロールする方法はありますか?

リストボックスとバインディングを使用できることはわかっていますが (まだ読んでいます)、コントロールをプログラムで追加する必要があります。これは、コントロールにイベントがあり、ユーザーコントロールの新しいインスタンスが発生したときにそれをサブスクライブしているためです。が作成され、子配列に追加されます。

私はこの投稿を見て、すでにアイテム コントロール内に uniforgrid を配置しましたが、まったく機能しません。これは私の xaml です。

<ScrollViewer Grid.Column="1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" >
    <ItemsControl x:Name="gridArchivos">
        <ItemsControl.ItemsPanel >
            <ItemsPanelTemplate >
                <UniformGrid Columns="5" />
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
    </ItemsControl>                    
</ScrollViewer>

投稿によると、列または行のみを指定する必要があり、両方を指定する必要はありません。だから、5列だけ。水平スクロールはしたくありません。垂直スクロールのみです。

御時間ありがとうございます。

4

1 に答える 1

8

私はあなたをコピーしXamlましたが、期待どおりに動作するようです

問題の診断に役立つ場合のテストコードを次に示します

Xaml:

<Window x:Class="WpfApplication7.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" Name="UI">
    <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" >
        <ItemsControl ItemsSource="{Binding Items, ElementName=UI}">
            <ItemsControl.ItemsPanel >
                <ItemsPanelTemplate >
                    <UniformGrid Columns="5"  />
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
        </ItemsControl>
    </ScrollViewer>
</Window>

コード:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        for (int i = 0; i < 1000; i++)
        {
            Items.Add("Stackoverflow"+i);
        }
    }

    private ObservableCollection<string> items = new ObservableCollection<string>();
    public ObservableCollection<string> Items
    {
        get { return items; }
        set { items = value; }
    }
}

結果:

ここに画像の説明を入力

于 2013-07-11T01:03:09.507 に答える