Не могу понять, как правильно управлять шириной столбца сетки с помощью пользовательского элемента управления в одной из его ячеек. У меня есть этот XAML для окна:Запретить управление сеткой для изменения ширины столбца
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<Button Grid.Row="0" Content="Button" Width="100" HorizontalAlignment="Left"/>
<TextBox Grid.Row="1" />
<local:UserControl1 Grid.Row="2"
HorizontalAlignment="Left" VerticalAlignment="Top"/>
</Grid>
и пользовательский элемент управления представляет собой чертеж, набор растягивать по мере необходимости:
<UserControl x:Class="WpfApplication1.UserControl1"
Height="auto" Width="auto">
<Grid Background="Aqua">
<Path Fill="Coral" Stroke="Black" StrokeThickness="1"
Stretch="Uniform"
HorizontalAlignment="Left" VerticalAlignment="Top">
<Path.Data>
<RectangleGeometry Rect="40,20, 140,30" RadiusX="10" RadiusY="10" />
</Path.Data>
</Path>
</Grid>
</UserControl>
Чтобы я установить фон пользовательского элемента управления в синий цвет.
Я хотел бы иметь ширину столбца, игнорируя «естественный» размер пользовательского элемента управления. Я имею в виду, что я бы хотел, чтобы пользовательский элемент управления не определял ширину во время компоновки столбца, но чтобы настроить его ширину на любую ширину столбца.
В этом примере изначально Grid установила ширину столбца на значение кнопки, и пользовательский элемент управления будет использовать ширину столбца для изменения размера. Затем, если длинный текст вводится в текстовое поле, как только текстовое поле начинает шире, чем кнопка, и столбец также начинает изменяться, в свою очередь, пользовательский элемент управления будет настраиваться так, чтобы поддерживать тот же размер, что и столбец.
Я пробовал комбинации значений растяжения, а также использовал MeasureOverride() в пользовательском элементе управления. Последнее не работает, потому что полученным AvalaibleSize является Infinity, а не ширина столбца.
Это очень помогает, спасибо, и я поставил под вопрос вопрос. В реальном контексте я не могу использовать текстовое поле (или оно должно быть скрытым, но мне не хочется этого делать), и поскольку столбец будет содержать несколько элементов управления, я не смогу привязываться к нему в частности. Я прочитал другие темы о привязке к gid ColumnDefinition, но это не удалось, поэтому я все еще ищу эту возможность. – 742