0

私は 3 列の DataGrid を持っています。最初の列セルは、ユーザーがさまざまな長さの値を選択できる Combo です。選択した項目の値全体を最初の列に表示したいと思います (つまり、内容に合わせてサイズを調整する必要があります)。これは、列の Width="Auto" を設定すると機能します。問題は、グリッドの幅全体が占有され、スクロール バーが表示されるときです。代わりに、データグリッド自体が常に拡張され、その結果、そのコンテナーが拡張されます。どうすればこれを行うことができます..私のxamlの構造は次のとおりです

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>
    <local:MyUserControl... Grid.Col="1">
    <Expander Grid.Column="2">
        <GroupBox  Template="{Binding OptionsSelectorTemplate}" Grid.Row="1" />
    </Expander
</Grid>

<ControlTemplate x:Key="OptionsSelectorTemplate">
    <StackPanel Orientation="Vertical">
        <dxl:NavBarControl...>
            <dxn:NavBarControl.Groups>
                <dxn:NavBarGroup Header="Options Set 1">
                    <DataGrid Style="{StaticResource DataGridTemplateStyle}" ItemSource="{Binding ViewModel.Options}" DataContext="{Binding .}"/>
                </dxn:NavBarGroup>
                <dxn:NavBarGroup Header="Options Set 2">
                    <DataGrid Style="{StaticResource DataGridTemplateStyle}" ItemSource="{Binding ViewModel.Options}" DataContext="{Binding .}"/>
                </dxn:NavBarGroup>
        </dxl:NavBarControl...>
        <Button ... />
    </StackPanel>
</ControlTemplate>

<Style x:Key="DataGridTemplateStyle" TargetType="DataGrid">
    <Setter Property="Template" Value="{StaticResource DataGridTemplate}" />
</Style>     

<ControlTemplate x:Key="DataGridTemplate">
    <DockPanel HorizontalAlignment="Stretch">
        <DataGrid Name="_dataGrid" 
              AutoGenerateColumns="False" RowHeaderWidth="0" HeadersVisibility="Column" CanUserAddRows="False" GridLinesVisibility="None" HorizontalAlignment="Stretch" KeyboardNavigation.TabNavigation="Cycle">

            <DataGrid.Columns>
                <DataGridTemplateColumn Header="Col1" MinWidth="75" Width="Auto" KeyboardNavigation.IsTabStop="False">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <ComboBox.../>  <---Want this guy to size to always fit the selected list item and to expand the entire datagrid if need be w/o displaying horizontal scroll bar.
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn Header="Weight" MinWidth="40"  >
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Border >
                                <TextBox T../>
                            </Border>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn Header="NN" Width="30">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <CheckBox .../>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
            </DataGrid.Columns>
        </DataGrid>

    </DockPanel>
</ControlTemplate>
4

1 に答える 1

0

ドキュメントのように見えますが、DataGrid 列は一方向にのみサイズ変更されます。つまり、幅は狭くなりません。

于 2013-02-14T19:42:21.590 に答える