在自定义控件中定位UIElement

时间:2013-05-03 09:27:35

标签: wpf wpf-controls uielement wpf-positioning

我正在开发自定义控件,TextBox内放置ButtonGrid

当我为UserControl Say - Left设置自定义属性时:按钮应显示在TextBox之前,而对于Right,按钮应显示在Grid的右侧。文本框。

因为,我在{{1}}中定义了两个元素 - 我无法按照我的要求定位。

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}