WPF中的网格面板元素是否有数据窗口?

tbi*_*hel 5 c# wpf grid datatemplate

对WPF来说相当新...

我有一个数据集合,我想绑定到网格面板.每个对象都包含其网格行和列,以及填充在网格位置的内容.我真的很喜欢如何在列表框XAML中创建数据模板来创建一个几乎没有任何代码的UI.有没有办法为网格面板元素创建数据模板,并将面板绑定到数据集合?

Hei*_*nzi 14

您可以使用ItemsControla Grid作为其面板.这是一个例子.XAML:

    <ItemsControl x:Name="myItems">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition />
                        <ColumnDefinition />
                        <ColumnDefinition />
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition />
                        <RowDefinition />
                        <RowDefinition />
                    </Grid.RowDefinitions>
                </Grid>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding MyText}" />
            </DataTemplate>
        </ItemsControl.ItemTemplate>
        <ItemsControl.ItemContainerStyle>
            <Style>
                <Style.Setters>
                    <Setter Property="Grid.Row" Value="{Binding MyRow}" />
                    <Setter Property="Grid.Column" Value="{Binding MyColumn}" />
                </Style.Setters>
            </Style>
        </ItemsControl.ItemContainerStyle>
    </ItemsControl>
Run Code Online (Sandbox Code Playgroud)

Codebehind(用于测试目的):

    public Window1()
    {
        InitializeComponent();
        myItems.ItemsSource = new[] {
            new {MyRow = 0, MyColumn = 0, MyText="top left"},
            new {MyRow = 1, MyColumn = 1, MyText="middle"},
            new {MyRow = 2, MyColumn = 2, MyText="bottom right"}
        };
    }
Run Code Online (Sandbox Code Playgroud)

  • 如果您要显示已知行数,则可以很好地工作,但它不允许您根据数据量显示任意数量的行. (5认同)