Позиционирование UIElement в пользовательском контроле
Я разрабатываю пользовательский элемент управления, где есть TextBox
и Button
размещены внутри Grid
,
Дело в том, когда я устанавливаю пользовательское свойство для UserControl
Скажи - влево: кнопка должна отображаться до TextBox
, а для правой кнопки должна отображаться на правой стороне текстового поля.
Так как я определяю оба элемента в Grid
- Я не в состоянии позиционироваться в соответствии с моими требованиями.
1 ответ
Решение
Если вы должны использовать Grid
, Вы можете сделать свой Grid
иметь 3 столбца и переключить TextBox
Grid.Column
на основе вашего пользовательского свойства.
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Button Grid.Column="1"
Content="Some Text" />
<TextBox Text="Test">
<TextBox.Style>
<Style TargetType="{x:Type TextBox}">
<Setter Property="Grid.Column"
Value="0" />
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type UserControl}},
Path=Left}"
Value="True">
<Setter Property="Grid.Column"
Value="2" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
</Grid>
Вы можете переключить {x:Type UserControl}
в DataTrigger
на ваш {x:Type CustomUserControl}