0

ユーザー コントロールに、動的データソースにバインドされたリスト ボックスを配置しました。このユーザー コントロールはポップアップ ウィンドウに表示されます。このリスト ボックスがウィンドウの残りのスペースを埋めることができるようにしたいです。これが私が試したXamlです:

<ComboBox x:Name="cmbx1" Grid.Column="0" Grid.Row ="0" Margin="5"
                  Width="150" VerticalAlignment="Center" HorizontalAlignment="Left" SelectionChanged="filters_SelectionChanged">
  ......
</ComboBox>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Grid.Column="1" Grid.Row="0">
    <Button Content="Test" Margin="5"  Click="Button_Add" />
</StackPanel>

<DataGrid x:Name="ListGrid" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2"  
  ......
</DataGrid>
<ComboBox x:Name="cmb2" Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" Margin="5">
  ......
</ComboBox>        
<ListBox x:Name="lstSharing" Grid.Row="3"  Grid.Column="0" Grid.ColumnSpan="2" Margin="0,0,10,0"                         
                    Width="{Binding Width, ElementName=ListGrid}">
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>                    
            <tkit:WrapPanel Orientation="Horizontal" MaxWidth="650" />                    
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal" Margin="3" Width="Auto">
                <CheckBox IsChecked="{Binding IsChecked, Mode=TwoWay}" />
                <TextBlock Text="{Binding ItemName}" Width="120" />
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>       

リストボックスの高さと幅は、リストボックスにバインドされたアイテムであるウィンドウサイズに基づいて動的に設定できます。しかし、それは正しく機能していません。最初、リストボックスにはスクロールバーがありません。スクロールバーが表示されるようにウィンドウのサイズを手動で変更する必要があります。動的に変更することはできないので、MaxWidth = 600 とします。それ以外の場合は、常にすべての項目が 1 行に表示されます。

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

0

これはテストされていませんが、次のようなことを試してみます。

<ListBox x:Name="lstSharing" 
         Grid.Row="3"  
         Grid.Column="0" 
         Grid.ColumnSpan="2" 
         Margin="0,0,10,0"                         
         HorizontalAlignment="Stretch"
         VerticalAlignment="Stretch">
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>                    
            <tkit:WrapPanel Orientation="Horizontal" 
                            MaxWidth="{Binding ElementName=lstSharing, Path=ActualWidth}" />                    
        </ItemsPanelTemplate>

親コンテナーを見ずにこれが機能するかどうかを知るのは少し難しいですが、正しい方向を示しているはずです。

于 2013-03-19T15:55:56.600 に答える