繁体   English   中英

动态绘制网格X​​AML C#

[英]Draw a grid dynamically xaml c#

我希望xaml中的网格可以向我显示一组对象,我应该如何进行?

我已经绑定了这些:

C# // Collection.DataContext = Mycollection;

xaml // Grid.RowSpan="{Binding getSizeofcollection}"

我的收藏包含所有相同种类的对象。 我想显示1个对象/行

是否可以创建一个模板,该模板显示如何连续显示一个对象然后在网格中使用它?

感谢您的建议

编辑:事实上,我不能绑定到哈希表,但我可以绑定到列表是我的问题的根源。 现在我正在尝试在列表中转换我的哈希表

编辑n°2:好吧,我正确地将哈希表转换为列表,但是此xamlparse异常仍在此处

Grid是布局容器,而不是控件。 您想使用一个DataGrid ,它将允许您将ItemsSource设置为Mycollection 然后,您可以让它为您创建列,也可以控制并明确定义所需的列以及应如何显示它们。

很抱歉,我发现您的问题不清楚您要的是什么。

基于您的评论点击这里

我有一个相同对象的列表,我希望每个对象及其属性都在DataGrid / StackPanel的一行中,或类似的东西,所以20个对象,20行,每个属性都有一个列

听起来您只需要一个DataGrid。

<DataGrid x:Name="Collection" ItemsSource="{Binding }" />

DataGrid的默认行为是为每个项目创建一个Row,并为该项目的每个属性自动生成一列。 因此,如果列表中有20个MyClass类型的对象,并且每个对象包含3个属性,它将自动生成20行3列的网格。

但是,如果我误会了您,而您实际上正在寻找创建包含一行中所有项目的水平StackPanel,并且您不需要DataGrid提供的选择/排序功能,建议您改用ItemsControl

这只是一个简单的控件,它将遍历一个集合,并使用您指定的任何模板绘制集合中的每个项目。 所有项目都包装在<ContentPresenter>并放置在您指定的任何布局容器中(默认为垂直StackPanel)。

既然您说过要使所有项目都在一条水平线上,那么最好的ItemsPanelTemplate可能是StackPanel ,其方向设置为Horizontal

您的XAML最终看起来像这样:

<ItemsControl x:Name="Collection" ItemsSource="{Binding }">
    <!-- ItemsPanelTemplate -->
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>

    <!-- ItemTemplate -->
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <!-- // put whatever XAML you want to use to draw each item here -->
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

您可以使用一些自定义的AttachedProperty。

像这样:

<Grid Grid.Row="1"
              commonUI:GridExtension.ItemsSource="{Binding ItemsSource}"
              commonUI:GridExtension.Rows="{Binding RowDefinitions}"
              commonUI:GridExtension.Columns="{Binding ColumnDefinitions}"/>

对于文档: http : //msdn.microsoft.com/zh-cn/library/ms749011(v=vs.110).aspx

但就您而言,简单的ListBox或ItemsControl似乎更合适...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM