我正在开发自定义控件,TextBox
内放置Button
和Grid
。
当我为UserControl
Say - Left设置自定义属性时:按钮应显示在TextBox
之前,而对于Right,按钮应显示在Grid
的右侧。文本框。
因为,我在{{1}}中定义了两个元素 - 我无法按照我的要求定位。
答案 0 :(得分:2)
如果您必须使用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}