Как установить ширину DataGridTemplateColumn по содержимому? - PullRequest
0 голосов
/ 17 июня 2020

Я новичок в WPF, и мой вопрос: есть ли способ установить ширину столбца по элементу наибольшей ширины в этом столбце?

Когда я запускаю свое приложение, этот столбец выглядит так

enter image description here

Слово <EXISTING CALIBRATIO сжимается. Это слово должно отображаться полностью как <EXISTING CALIBRATION>

Например, когда раскрывающийся список открыт

enter image description here

Мой код для этого столбца:

<DataGridTemplateColumn Header="{x:Static res:Resources.geo_calib_folder}">
                                    <DataGridTemplateColumn.CellTemplate>
                                        <DataTemplate>
                                            <ComboBox x:Name="Cb_geometry_calibration"
                                                  ToolTip="{x:Static res:Resources.tooltip_chosen_geometry_calibration_folder}"
                                                  PreviewMouseWheel="Cb_PreviewMouseWheel"
                                                      SelectionChanged="Cb_geometry_calibration_SelectionChanged"
                                                      ItemsSource="{Binding Path=GeoCalibrationFolders}"
                                                      SelectedItem="{Binding Path=SelectedGeoCalibrationFolder}"
>
                                                <ComboBox.ItemTemplate>
                                                    <DataTemplate>
                                                        <TextBlock 
                                                        Text="{Binding Path=UIRepresentation}" />
                                                    </DataTemplate>
                                                </ComboBox.ItemTemplate>

                                                <ComboBox.Style>
                                                    <Style TargetType="ComboBox">
                                                        <Style.Triggers>
                                                            <DataTrigger Binding="{Binding IsGeoCalibFolderBold}" 
                                                                         Value="True">
                                                                <Setter Property="FontWeight" Value="Bold"/>
                                                            </DataTrigger>
                                                        </Style.Triggers>
                                                    </Style>
                                                </ComboBox.Style>

                                                <ComboBox.ItemContainerStyle>
                                                    <Style TargetType="ComboBoxItem">
                                                        <Setter Property="FontWeight" Value="Normal"/>
                                                    </Style>
                                                </ComboBox.ItemContainerStyle>
                                            </ComboBox>
                                        </DataTemplate>
                                    </DataGridTemplateColumn.CellTemplate>
                                </DataGridTemplateColumn>

Итак, вопрос, есть ли способ динамически изменять размер этого столбца в соответствии с содержимым?

PS Я понимаю, что могу жестко закодировать это значение, например width = 300, но я хотел бы найти способ сделать это динамически.

1 Ответ

0 голосов
/ 17 июня 2020

Согласно этому повторяющемуся сообщению , вы не можете сделать это прямо в XAML. Для этого требуется некоторый код позади или присоединенного поведения, потому что поле со списком определяет свою ширину до извлечения собранных элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...