1

プロジェクトの場合、私は非常に複雑なviewModel構造を持っています。

セッターで「NotifyOfPropertyChange」呼び出しを省略したことに注意してください。

public class EntityViewModel : PropertyChangedBase
{
    public ObservableCollection<PlatformViewModel> Platforms;
}

public class PlatformViewModel : PropertyChangedBase
{
    public ObservableCollection<UnitViewModel> Units;
}

public class UnitViewModel : PropertyChangedBase
{
    public ObservableCollection<ModuleViewModel> Units;

    public string UnitName { get; set; }
}

public class ModuleViewModel : PropertyChangedBase
{
    public string ModuleName { get; set; }
    public string Version { get; set; }
}

ここで、このようにリストで視覚化したいと思います(目的の結果をより明確にするため)

ViewModel の視覚化

黒はプラットフォーム、緑はユニット、オレンジはモジュールです。

ListView で試してみましたが、成功しませんでした。単一の要素が表示されることはありません。

質問は次のとおりです。

  • そのような視覚化に到達するための最良の方法は何ですか?

  • ListView は良い選択でしょうか?

  • 私が見つけることができない良い例はどこにありますか?

4

2 に答える 2

2

開始するには、レイアウトをさらにカスタマイズする必要があります。

<ItemsControl ItemsSource="{Binding Platforms}" >
     <ItemsControl.ItemTemplate>
         <DataTemplate>
               <Border BorderBrush="Black" BorderThickness="1">
                    <ItemsControl ItemsSource="{Binding Units}">
                          <ItemsControl.ItemTemplate>
                               <DataTemplate>
                                    <Border BorderBrush="Green" BorderThickness="1">
                                        <ItemsControl ItemsSource="{Binding Units}">
                                          <ItemsControl.ItemsPanel>
                                            <ItemsPanelTemplate>
                                                <StackPanel Orientation="Horizontal"></StackPanel>
                                            </ItemsPanelTemplate>
                                        </ItemsControl.ItemsPanel>
                                            <ItemsControl.ItemTemplate>
                                                <DataTemplate>
                                                    <Border BorderBrush="Yellow" BorderThickness="1"></Border>
                                                </DataTemplate>
                                            </ItemsControl.ItemTemplate>
                                        </ItemsControl>
                                    </Border>
                                   </DataTemplate>
                                </ItemsControl.ItemTemplate>
                            </ItemsControl>
                        </Border>
                      </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
于 2013-04-30T16:21:51.500 に答える
1

各要素が選択可能かどうか、または水平方向のサイズが均一かどうかはわかりませんが、そうであれば、ネストされた でこれをモデル化できるはずですItemsControl

をでに設定しItemsPanel、もう一方の垂直sのデフォルトで問題ないはずです。UniformGridRows="1"Unit ItemsControlItemsControlItemsPanelStackPanel

于 2013-04-30T16:16:42.500 に答える