2013-05-03 2 views
0

Я разрабатываю пользовательский контроль, где есть TextBox и Button, размещенные внутри Grid.Позиционирование UIElement в пользовательском контроле

Дело в том, что я устанавливаю пользовательское свойство для UserControl Say - Left: кнопка должна отображаться перед TextBox, а для правой кнопки кнопка должна отображаться в правой части текстового поля.

Так как я определяю оба элемента в Grid - я не могу разместить в соответствии с моими требованиями.

ответ

2

Если вы должны использовать Grid, Вы можете сделать свой Grid иметь 3 колонки и включите TextBoxGrid.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}