解决  如何使用ItemTemplate水平绑定我的对象?

DESTRO.

活跃的成员
加入
3月28日,2020年
消息
36
编程经验
1-3
我有一个课程类型的观察中心,如下所示:

VIew model:
public ObservableCollection<selectedLevel> selectedLevels { get; set; }
selectedLevels = new ObservableCollection<selectedLevel>();
public class selectedLevel
{
   public string Level
    {
        get;
        set;
    }

   public string PlanetSelected
    {
        get; set;

    }

}

我绑定了用itemtemplate选择的级别和行星,如下所示:

Xaml:
<ItemsControl.ItemTemplate>
    <DataTemplate>
        <Grid>
           <Grid.ColumnDefinitions>
                   <ColumnDefinition SharedSizeGroup="Col1" />
                   <ColumnDefinition SharedSizeGroup="Col2" />
                   <ColumnDefinition SharedSizeGroup="Col3" />
                   <ColumnDefinition SharedSizeGroup="Col4" />
                   <ColumnDefinition SharedSizeGroup="Col5" />
                   <ColumnDefinition SharedSizeGroup="Col6" />
                   <ColumnDefinition SharedSizeGroup="Col7" />
                   <ColumnDefinition SharedSizeGroup="Col8" />
                   <ColumnDefinition SharedSizeGroup="Col9" />
                   <ColumnDefinition SharedSizeGroup="Col10"/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                   <RowDefinition SharedSizeGroup="Row1"/>
                   <RowDefinition SharedSizeGroup="Row2"/>
            </Grid.RowDefinitions>
           <Label Grid.Column="0"   Content="{Binding Level}"/>
           <Label Grid.Column="1"   Content="{Binding PlanetSelected}"/>

       </Grid>
    </DataTemplate>
   </ItemsControl.ItemTemplate>

每个对象都有一个新的行,但我希望它们出现在新列中,但只保留两行。

对于两个标签,我尝试了设置grid.row = 0和grid.row = 1,但它们仍然显示在新行中。

如何代表列中的对象属性而不是行?
 

sh

众所周知的成员
加入
2018年9月5日
消息
1,982
编程经验
10+
对于两个标签,我尝试了设置grid.row = 0和grid.row = 1,但它们仍然显示在新行中。

如何代表列中的对象属性而不是行?
你已经......

Your current code should put <Label Grid.Column="0" Content="{Binding Level}"/> on line/column 0 in the first cell.
Your current code should put <Label Grid.Column="1" Content="{Binding PlanetSelected}"/> on line/column 0 in the second cell.

召回列左右。虽然行是顶部到底部。
如果您在两个标签上做过上面的说明,那么您的标签都将在不同行上的第一列中。

如果它没有这样做,你还有其他东西导致你的代码中的ruckus,这让你的模板顺序扰乱。为什么不为您的标签创建一个绑定属性,以便根据绑定属性设置它们?
 

sh

众所周知的成员
加入
2018年9月5日
消息
1,982
编程经验
10+
但我认为问题并不清楚自己
问题确实明确了自己。  ;) 我确切地知道你的意思。你不明白我给你的答案。

If you are setting the column grid on the control <Label Grid.Column="0" - quite simply that control will only sit in one location. And any new object/controls added after it will sit right on top of them too. Also recall my suggestion to bind your labels to which grid column/row they should belong to.

我也希望你读到这一点,因为它有其他控件可以使您在无需所有这些ColumnDefinitions的情况下更轻松地进行操作,因此请参阅 面板概述 - WPF .NET Framework 读取堆叠面板/包装板/但具体码头面板。我对设计的想法是拥有一列的一列,其中一个面板中的一个并在面板中设置方向方向,当嵌套进入电网定义时,将新的控件嵌套进入面板时,将使您的生活更轻松。这样做还将否定绑定控件位置的需要,因为这将由面板处理。
 
最佳 底部