質問

私は、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>

私はここから行くために、私は非常に任意のヘルプをお願い申し上げますどこか分かりません!ありがとう!

役に立ちましたか?

解決

あなたが項目の非対話型のグリッドをしたい場合は、共有のサイズの範囲を使用していますItemsControlGridを使用することができます:

<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を使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top