StackPanel в DataGrid не разрушается, когда должен

У меня проблема с StackPanel и его видимость в DatagridCellTemplateColumn,

мой ControlTemplate выглядит так:

<ControlTemplate x:Key="PartPrioritySettingsGridCellTemplate">
    <StackPanel Name="CellGrid" Orientation="Horizontal" Tag="{TemplateBinding Tag}"
         Visibility="{Binding RelativeSource={RelativeSource Self},
             Path=Tag.IsNotEmpty, Converter={StaticResource BoolToVisibility}}">

        <CheckBox Margin="4,1,2,1"
            IsChecked="{Binding Path=Tag.Items.IsChecked, ElementName=CellGrid, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
        <xceed:IntegerUpDown Margin="2,1" Maximum="99" Minimum="1"
            Value="{Binding Path=Tag.Priority, ElementName=CellGrid, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
        <Button Margin="2,1,4,1" Command="{Binding Path=Tag.ShowDetailCommand, ElementName=CellGrid}"
            Content="{Binding Path=Tag.ItemsCountString, ElementName=CellGrid}"
            ContentStringFormat="{}{0:}" />
    </StackPanel>
</ControlTemplate>

Использование этого шаблона выглядит следующим образом:

 <DataGridTemplateColumn.CellTemplate>
     <DataTemplate>
         <Control Width="auto" Tag="{Binding Webs}" Template="{StaticResource PartPrioritySettingsGridCellTemplate}" />
     </DataTemplate>
 </DataGridTemplateColumn.CellTemplate>

Я хочу сделать DataGrid где ширина всех столбцов равна ширине текущего содержимого. Но когда содержимое столбца свернуто, ширина столбца должна быть задана только шириной заголовка. На самом деле я не знаю, в чем проблема в моем решении, но все мои столбцы имеют одинаковую ширину, даже если их содержимое свернуто.

То, что я пытаюсь достичь, выглядит так: желаемый результат

То, что я получаю, выглядит так: текущий результат

И это код DataGrid

       <DataGrid Grid.Row="0"
              AutoGenerateColumns="False"
              CanUserAddRows="False"
              CanUserDeleteRows="False"
              CanUserReorderColumns="False"
              CanUserResizeColumns="False"
              CanUserResizeRows="False"
              ItemsSource="{Binding JobBomPriorityRows,
                                    UpdateSourceTrigger=PropertyChanged}">
        <!--    -->
        <DataGrid.Resources>
            <vc:BoolToVisibilityConverter x:Key="BoolToVisibility" />
            <ControlTemplate x:Key="PartPrioritySettingsGridCellTemplate" TargetType="Control">
                <StackPanel Name="CellGrid"
                            Width="auto"
                            Orientation="Horizontal"
                            Tag="{TemplateBinding Tag}"
                            Visibility="{Binding RelativeSource={RelativeSource Self},
                                                 Path=Tag.IsNotEmpty,
                                                 Converter={StaticResource BoolToVisibility}}">

                    <CheckBox Margin="4,1,2,1" IsChecked="{Binding Path=Tag.Items.IsChecked, ElementName=CellGrid, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
                    <xceed:IntegerUpDown Margin="2,1"
                                         Maximum="99"
                                         Minimum="1"
                                         Value="{Binding Path=Tag.Priority,
                                                         ElementName=CellGrid,
                                                         Mode=TwoWay,
                                                         UpdateSourceTrigger=PropertyChanged}" />
                    <Button Margin="2,1,4,1"
                            Command="{Binding Path=Tag.ShowDetailCommand,
                                              ElementName=CellGrid}"
                            Content="{Binding Path=Tag.ItemsCountString,
                                              ElementName=CellGrid}"
                            ContentStringFormat="{}{0:}"
                            Padding="3,0" />
                </StackPanel>
            </ControlTemplate>
        </DataGrid.Resources>
        <DataGrid.Columns>
            <DataGridTextColumn Width="*"
                                Binding="{Binding Week}"
                                Header="Week"
                                IsReadOnly="True"
                                SortDirection="Ascending" />
            <DataGridTextColumn Width="*"
                                Binding="{Binding JobBom}"
                                Header="Job Bom"
                                IsReadOnly="True" />
            <DataGridTemplateColumn Width="auto"
                                    Header="Web"
                                    IsReadOnly="True">

                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <Control Tag="{Binding Webs}" Template="{StaticResource PartPrioritySettingsGridCellTemplate}" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
            <DataGridTemplateColumn Width="auto"
                                    Header="Flange"
                                    IsReadOnly="True">

                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <Control Tag="{Binding Flanges}" Template="{StaticResource PartPrioritySettingsGridCellTemplate}" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
            <DataGridTemplateColumn Width="auto"
                                    Header="Plate"
                                    IsReadOnly="True">

                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <Control Tag="{Binding Plates}" Template="{StaticResource PartPrioritySettingsGridCellTemplate}" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
            <DataGridTemplateColumn Width="auto"
                                    Header="Gusset"
                                    IsReadOnly="True">

                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <Control Tag="{Binding Gussets}" Template="{StaticResource PartPrioritySettingsGridCellTemplate}" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
            <DataGridTemplateColumn Width="auto"
                                    Header="SP"
                                    IsReadOnly="True">

                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <Control Tag="{Binding SPs}" Template="{StaticResource PartPrioritySettingsGridCellTemplate}" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
            <DataGridTemplateColumn Width="auto"
                                    Header="STD G"
                                    IsReadOnly="True">

                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <Control Tag="{Binding STD_Gs}" Template="{StaticResource PartPrioritySettingsGridCellTemplate}" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
            <DataGridTemplateColumn Width="auto"
                                    Header="STD SP"
                                    IsReadOnly="True">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <Control Tag="{Binding STD_SPs}" Template="{StaticResource PartPrioritySettingsGridCellTemplate}" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>
    </DataGrid>

0 ответов

Другие вопросы по тегам