0

我正在开发一个自定义控件,其中有一个TextBox和一个Button放置在Grid.

问题是当我为UserControlSay - Left 设置自定义属性时:Button 应该显示在 之前TextBox,而 Right Button 应该显示在文本框的右侧。

因为,我正在定义 a 中的两个元素Grid- 无法根据我的要求进行定位。

4

1 回答 1

2

如果您必须使用 a Grid,您可以制作Grid3 列并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}

于 2013-05-03T09:35:03.177 回答