2011-08-01 102 views
0

在我的項目裏面控件item不佔用整個用戶控件的寬度。我正在使用DataTemplateSelector(手動編寫的類)來選擇模板的類型。Itemscontrol伸展silverlight

我查了帖子Silverlight: Set Items Widths in ItemsControl to Stretch但它不適合我。項目不會自動伸展並利用整個空間。請幫忙!在此先感謝

<ItemsControl ItemsSource ="{Binding}" Margin="0,5,0,0" HorizontalContentAlignment="Stretch" > 
    <ItemsControl.ItemTemplate> 
     <DataTemplate>      
      <local:AddressFieldsTemplateSelector Content="{Binding}" x:Name="addressTemplateSelectorObject"> 
       <!-- TextBox template--> 
       <local:AddressFieldsTemplateSelector.TextBoxDataTemplate> 
        <DataTemplate>         
         <Grid Margin="0,0,0,5" HorizontalAlignment="Stretch" > 
          <Grid.ColumnDefinitions> 
           <ColumnDefinition Width="0.5*" /> 
           <ColumnDefinition Width=".1*" /> 
            <ColumnDefinition Width="*"/> 

          </Grid.ColumnDefinitions> 
          <TextBlock Text="{Binding AddressFieldName}" Grid.Column="0" Style="{StaticResource DefaultTheme_TextBlockStyle}"/> 
          <TextBox Text="{Binding AddressFieldValue, Mode=TwoWay}" Grid.Column="2" Style="{StaticResource TextBoxStyle}" TextWrapping="NoWrap" MaxLength="50" HorizontalAlignment="Stretch" /> 
         </Grid> 
        </DataTemplate> 
       </local:AddressFieldsTemplateSelector.TextBoxDataTemplate> 
      </local:AddressFieldsTemplateSelector> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 
+0

你可以在你的問題上張貼圖片,以便我們看到問題的實際情況嗎? – StephenT

回答

0

由於星號寬度的限制,datatemplate中的項目將始終佔用所有可用寬度。這個問題很可能與項目控制本身有關。您確定itemscontrol不包含在StackPanel或自動寬度Grid列中。 ItemsControl的HorizontalAlignment設置爲Left

+0

感謝您的回覆。是ItemsControl放置在網格中。並且該網格被放置在堆棧面板內部。我沒有爲ItemsControl設置Horizo​​ntalALignment屬性,所以它應該採用默認值。但不知道如何影響項目伸展屬性? – Sai

+0

您的網格有寬度嗎?你的StackPanel的方向是什麼? – Danexxtone