ItemsControlのでWPF GridViewRowPresenter
-
22-08-2019 - |
質問
私は、WPFの学習を始めていると私は基本的にHTMLで簡単な表の機能を複製するためのItemsControlの内部でGridViewRowPresenterを使用しようとしています。それは(私が望んでいないもの)、対話型であるため、ListViewコントロールは適切ではありません。私は未知数のオブジェクトのジェネリックリストに結合しています。
、姓と名:私は2つの文字列プロパティを持つカスタムオブジェクトのリストを持っています。次のコードは動作します:
<ItemsControl Name="myItemsControl">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=FirstName}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
これは何もレンダリングしない間ます:
<ItemsControl Name="myItemsControl">
<ItemsControl.ItemTemplate>
<DataTemplate>
<GridViewRowPresenter>
<GridViewRowPresenter.Columns>
<GridViewColumnCollection>
<GridViewColumn DisplayMemberBinding="{Binding Path=FirstName}"></GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding Path=LastName}"></GridViewColumn>
</GridViewColumnCollection>
</GridViewRowPresenter.Columns>
</GridViewRowPresenter>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
私はここから行くために、私は非常に任意のヘルプをお願い申し上げますどこか分かりません!ありがとう!
解決
あなたが項目の非対話型のグリッドをしたい場合は、共有のサイズの範囲を使用していますItemsControl
でGrid
を使用することができます:
<ItemsControl ItemsSource="{Binding Items}" Grid.IsSharedSizeScope="True">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" SharedSizeGroup="FirstName"/>
<ColumnDefinition Width="*" SharedSizeGroup="LastName"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding FirstName}"/>
<TextBlock Grid.Column="1" Text="{Binding LastName}"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
より効率的なアプローチは、(おそらくサブクラスPanel
可能性)Grid
と同様に動作し、独自のGrid
サブクラスを書くことになりますが、必要に応じて自動的に行を追加します。その後Panel
ためItemsPanel
としてそのItemsControl
を使用します。
所属していません StackOverflow