2010-08-19 87 views
3

我有一些字段的簡單形式。所以我決定添加一些帶有文本框和標籤的DataField。標籤可管理,它們的長度可以改變,我需要將我的文本框放在距離左側相同的距離。我該如何做這件事?Silverlight數據字段內容對齊

alt text

+1

簡單地說,您可以將標籤與StackPanel分組(默認垂直方向)。堆疊面板將會增長以適應內容。 HTH – 2010-08-21 13:58:34

回答

2

嘗試設置

tk:DataField.IsFieldGroup="True" 

其中T k是工具包數據字段的名稱空間;在所有字段標籤的父容器上,您希望具有相同的寬度。

<Grid tk:DataField.IsFieldGroup="True">... 

這將使標籤相同的寬度作爲FIELDGROUP最長的標籤。

1

您可以使用網格

<Grid> 
    <Grid.ColumnDefinitions> 
    <ColumnDefinition Width="Auto"/> 
    <ColumnDefinition Width="*"/> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
    <RowDefinition Height="Auto"/> 
    <RowDefinition Height="Auto"/> 
    </Grid.RowDefinitions> 
    <Label Content="Label" Grid.Row="0" Grid.Column="0"/> 
    <TextBox Grid.Row="0" Grid.Column="1"/> 
    <Label Content="Long Label" Grid.Row="1" Grid.Column="0"/> 
    <TextBox Grid.Row="1" Grid.Column="1"/> 

+1

數據字段具有對我非常有用的附加功能。所以我需要他們的解決方案 – Evgeny 2010-08-19 20:31:31

+2

啊,我沒有看到! HiTech Magic的答案聽起來像是當時的正確方法。 – NVM 2010-08-19 20:48:28

0

我決定旁邊邏輯添加控制:

void MyControl_LayoutUpdated(object sender, EventArgs e) 
    { 
      if (this.columnSeparator.ActualWidth!=0&&this.columnSeparator.ActualWidth != this.columnSeparator.MinWidth) 
      { 
       this.IsLoaded = true; 
       SetWidth(); 
      } 
    } 

private void SetWidth() 
     { 
      if (IsWidthSet) 
       return; 
      if (!this.IsLoaded) 
       return; 
      var parentPanel = this.Parent as Panel; 
      if (parentPanel != null) 
      { 
       var textFields = parentPanel.Children.Where(p => p is BpTextField).Cast<BpTextField>().ToList(); 
       double max = this.LabelWidth; 
       foreach (var textField in textFields) 
       { 
        max = Math.Max(max, textField.LabelWidth); 
        if (!textField.IsLoaded) 
         return; 
       } 

       foreach (var textField in textFields) 
       { 
        textField.LabelWidth = max; 
       } 

       this.LabelWidth = max; 
      } 
     } 
     public bool IsLoaded { get; set; } 
     public bool IsWidthSet { get; set; } 

現在所有標籤對齊和好。