2

私はGoogleで広範囲に検索しましたが、次のことができるようにする必要があると思われるItemsControlの簡単な例を見つけるのに苦労しています.

私は現在、次の XAML レイアウトを使用して期待どおりに動作するチェックボックスを含むスクロール可能なリストボックスを持つグリッドを持っています

<Grid>
    <ListBox ScrollViewer.VerticalScrollBarVisibility="Auto" 
ItemsSource="{Binding Selections}" Margin="12,22,12,94">
    <ListBox.ItemTemplate>
            <DataTemplate>
                <CheckBox IsChecked="{Binding IsChecked}" 
        Content="{Binding Path=Item.SelectionName}">
                </CheckBox>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Grid>

各チェックボックスの右側に TextBox を追加して、行ごとに 1 つのチェックボックスと 1 つのテキストボックスで水平方向に整列させたいと考えています。2 つのコントロールを許可するには ItemsControl を使用する必要があると思いましたが、以下のように ItemsControl を使用するとスクロールできなくなります

<Grid>
    <ItemsControl ScrollViewer.VerticalScrollBarVisibility="Auto" 
    ItemsSource="{Binding Selections}" Margin="12,22,12,94">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <CheckBox IsChecked="{Binding IsChecked}" 
        Content="{Binding Path=Item.SelectionName}">
                </CheckBox>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
</Grid>

また、次のようなテキストボックスを追加しようとすると

    <DataTemplate>
        <CheckBox IsChecked="{Binding sChecked}" Content="{Binding Path=Item.BookieName}" />
        <TextBox />
    </DataTemplate>

エラーが発生するThe object 'DataTemplate' already has a child and cannot add 'TextBox'

本質的に、私はそれがこのように見えることを望みます

ここに画像の説明を入力

目的のレイアウトを取得するために XAML でコントロールを構造化する方法について、誰かが私にいくつかの指針を与えることができますか?

4

1 に答える 1

10

DataTemplate で StackPanel を使用し、向きを水平に設定するだけです。

 <DataTemplate>
    <StackPanel Orientation="Horizontal">
    <CheckBox IsChecked="{Binding sChecked}" Content="{Binding Path=Item.BookieName}" />
    <TextBox />
    </StackPanel>
</DataTemplate>
于 2012-10-09T19:59:08.230 に答える