C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 69 を表示中)
■40010 / )  Re[1]: WPF 改善方法
□投稿者/ kazuto (13回)-(2009/08/19(Wed) 14:24:19)
kazuto さんの Web サイト
2009/08/19(Wed) 14:29:21 編集(投稿者)
Gridの構成が良く分かりませんが、以下のように均等配置を推測した上で。

---------------
   |   |   |
---------------
   |   |   |
---------------
   |   |   |
---------------

■PathとTextを持ったクラスを作成
public class Data
{
    public string Path { get; set; }
    public string Text { get; set; }
}

■Dataクラスのコレクションを作成
public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();

        List<Data> source = new List<Data>()
        {
            new Data() { Path="", Text="Text1"},
            new Data() { Path="", Text="Text2"},
            new Data() { Path="", Text="Text3"},
            new Data() { Path="", Text="Text4"},
            new Data() { Path="", Text="Text5"},
            new Data() { Path="", Text="Text6"},
            new Data() { Path="", Text="Text7"},
            new Data() { Path="", Text="Text8"},
            new Data() { Path="", Text="Text9"}
        };

        this.DataContext = source;
    }
}

■ItemsControlとUniformGridを使用して定型的なUIを作成
<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid>
        <ItemsControl ItemsSource="{Binding}">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <UniformGrid Rows="3" Columns="3" />
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Vertical" Margin="5">
                        <Image Source="{Binding Path=Path}" Height="70" Width="70" />
                        <TextBlock TextWrapping="Wrap" HorizontalAlignment="Center" MaxWidth="90" FontSize="10" Text="{Binding Path=Text}" />
                    </StackPanel>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </Grid>
</Window>

マスが9マス固定という前提です。9マス以上のデータがある場合は切り捨てられます。
もちろんUniformGridのRows・Columnsの指定で色々な表示が出来ます。
スマートか分かりませんが、こんな感じはどうでしょうか?

返信 編集キー/


管理者用

- Child Tree -