的Windows Phone7界面设计在Silverlight

问题描述:

在我的Windows Phone7的Silverlight应用程序我有几个文本块对显示在运行时的一些动态数据。的Windows Phone7界面设计在Silverlight

例如

Name:  TextBlock[Dynamically_loading_Name] <-----------------(A) 
Address: TextBlock[Dynamically_loading_Asddress] <--------------(B) 
Phone: TextBlock[Dynamically_loading_Phone] <-----------------(C) 

由于不知多久的动态数据,所述的的TextBlocks(A,B,C),我已经给了性能高度=汽车,TextWrapping =裹。

问题是,当加载到A,B,C的TextBlocks它们是数据overlapping.If我可以给裕量相对于其它正文块我认为这将是确定。按页面顶部的默认页边距计算。

我添加StackPanels到每一行并做的StackPanel height属性=自动同样。当上部记录太长时,它仍然重叠。

,如果有人可以帮助我解决这个问题是一个很大的帮助。由于

编辑............................................ ....................

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> 
     <StackPanel Height="Auto" HorizontalAlignment="Left" Margin="9,20,0,0" Name="stackPanel1" VerticalAlignment="Top" Width="441"> 
      <TextBlock Height="30" Name="txt_Title" Text="Title:" Width="90" VerticalAlignment="Top" HorizontalAlignment="Left" /> 
      <TextBlock Height="Auto" Name="item_Title" Text="TextBlock" Width="330" TextWrapping="Wrap" /> 
     </StackPanel> 

     <StackPanel Height="Auto" HorizontalAlignment="Left" Margin="9,83,0,0" Name="stackPanel2" VerticalAlignment="Top" Width="441"> 
      <TextBlock Height="30" Name="txt_Link" Text="Link:" HorizontalAlignment="Left" VerticalAlignment="Top" /> 
      <TextBlock Height="Auto" Name="item_Link" Text="TextBlock" Width="306" TextWrapping="Wrap" Padding="0" /> 
     </StackPanel> 

     <StackPanel Height="Auto" HorizontalAlignment="Right" Margin="0,146,8,0" Name="stackPanel3" VerticalAlignment="Top" Width="439"> 
      <TextBlock Height="30" Name="txt_Description" Text="Description:" HorizontalAlignment="Left" VerticalAlignment="Top" /> 
      <TextBlock Height="Auto" Name="item_Description" Text="TextBlock" TextWrapping="Wrap" Width="305" /> 
     </StackPanel> 

     <StackPanel Height="Auto" HorizontalAlignment="Left" Margin="9,209,0,0" Name="stackPanel4" VerticalAlignment="Top" Width="439"> 
      <TextBlock Height="30" Name="txt_Comment" Text="Comment:" HorizontalAlignment="Left" VerticalAlignment="Top" /> 
      <TextBlock Height="Auto" Name="item_Comment" Text="TextBlock" TextWrapping="Wrap" Width="305" /> 
     </StackPanel> 

     <StackPanel Height="Auto" HorizontalAlignment="Left" Margin="6,272,0,0" Name="stackPanel5" VerticalAlignment="Top" Width="444"> 
      <TextBlock Height="30" Name="txt_PubDate" Text="Published_Date:" HorizontalAlignment="Left" VerticalAlignment="Top" /> 
      <TextBlock Height="Auto" Name="item_PubDate" Text="TextBlock" TextWrapping="Wrap" Width="307" /> 
     </StackPanel> 

     <StackPanel HorizontalAlignment="Left" Margin="6,335,0,239" Name="stackPanel6" Width="444"> 
      <TextBlock Height="30" Name="txt_Creator" Text="Creator: " HorizontalAlignment="Left" VerticalAlignment="Top" /> 
      <TextBlock Height="Auto" Name="item_creator" Text="TextBlock" TextWrapping="Wrap" Width="305" /> 
     </StackPanel> 

    </Grid> 

我觉得你所需要的只是一个Grid。只需要使Heights自动调整大小。此外,您可能希望始终将样式应用到TextBlock以保持一致的边距。

enter image description here

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition/> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition/> 
    </Grid.ColumnDefinitions> 
    <TextBlock x:Name="txt_Title" Text="Title:" Style="{StaticResource PhoneTextNormalStyle}" /> 
    <TextBlock x:Name="item_Title" Text="This is a very long title and I have no idea how long it will be" TextWrapping="Wrap" Grid.Column="1" Style="{StaticResource PhoneTextNormalStyle}" /> 
    <TextBlock x:Name="txt_Link" Text="Link:" d:LayoutOverrides="Width" Grid.Row="1" Style="{StaticResource PhoneTextNormalStyle}" /> 
    <TextBlock x:Name="item_Link" Text="This could be long too..." TextWrapping="Wrap" Padding="0" Grid.Column="1" Grid.Row="1" Style="{StaticResource PhoneTextNormalStyle}" /> 
    <TextBlock x:Name="txt_Description" Text="Description:" Grid.Row="2" Style="{StaticResource PhoneTextNormalStyle}" /> 
    <TextBlock x:Name="item_Description" Text="This will be very very very very very very very very very very very very very very very very very very long..." TextWrapping="Wrap" Grid.Column="1" Grid.Row="2" Style="{StaticResource PhoneTextNormalStyle}" /> 
    <TextBlock x:Name="txt_Comment" Text="Comment:" Grid.Row="3" Style="{StaticResource PhoneTextNormalStyle}" /> 
    <TextBlock x:Name="item_Comment" Text="TextBlock" TextWrapping="Wrap" Grid.Column="1" Grid.Row="3" Style="{StaticResource PhoneTextNormalStyle}" /> 
    <TextBlock x:Name="txt_PubDate" Text="Published_Date:" Grid.Row="4" Style="{StaticResource PhoneTextNormalStyle}" /> 
    <TextBlock x:Name="item_PubDate" Text="TextBlock" TextWrapping="Wrap" Grid.Column="1" Grid.Row="4" Style="{StaticResource PhoneTextNormalStyle}" /> 
    <TextBlock x:Name="txt_Creator" Text="Creator: " Grid.Row="5" Style="{StaticResource PhoneTextNormalStyle}" /> 
    <TextBlock x:Name="item_creator" Text="TextBlock" TextWrapping="Wrap" Grid.Column="1" Grid.Row="5" Style="{StaticResource PhoneTextNormalStyle}" /> 
</Grid> 
+0

谢谢Xin,Great ... !!!! – JibW

+1

不用客气。 :) –

看看这个论坛帖子可以帮助你。基本上尝试的StackPanel的设置maxWidth属性,如果一切都失败了;)

http://forums.silverlight.net/t/58227.aspx/1?Why+TextBlock+doesn+t+wrap+even+I+set+TextWrapping+to+Wrap+

希望这有助于。

+0

在我textWraping工作的罚款。问题是文本太长,因为它到达下一行以显示与下面的文本重叠。 – JibW

+0

您可以编辑并显示一些示例代码,以便我可以重现问题并帮助您解决问题吗? –

+0

嗨Johan,我在编辑部分添加了XAML代码... – JibW

我不会用一个网格单元和几个利润率的所有项目。如果你使用StackPanel而不是Grid,那么排列应该没问题。

<StackPanel Orientation="Vertical"> 

    <StackPanel Orientation="Horizontal"> 
    </StackPanel> 

    <StackPanel Orientation="Horizontal"> 
    </StackPanel> 

</StackPanel> 

编辑:

我做这看起来很不错,我的样本项目,但我不知道如果我真的得到了你的问题。第一个标题不包裹,因为它具有固定的高度,但第二个标题没有设置高度。所有的Stackpanels都应该调整它们的大小。

<StackPanel> 
    <StackPanel Orientation="Horizontal"> 
     <TextBlock Height="30" Width="90" TextWrapping="Wrap" Text="Title does not wrap" VerticalAlignment="Top" HorizontalAlignment="Left" /> 
     <TextBlock Width="330" TextWrapping="Wrap" Text="TextTextTextTextTextTextTextTextTextTextTextTextTextTextTextText" /> 
    </StackPanel> 
    <StackPanel Orientation="Horizontal"> 
     <TextBlock Width="90" TextWrapping="Wrap" Text="Title wraps" VerticalAlignment="Top" HorizontalAlignment="Left" /> 
     <TextBlock Width="330" TextWrapping="Wrap" Text="TextTextTextTextTextTextTextTextTextTextTextTextTextTextTextText" /> 
    </StackPanel> 
</StackPanel> 
+0

嗨MAtthiasG,在堆叠面板内任何东西都不会重叠。如果高层面板上的动态文本太长,则上面的堆叠面板会与下面的面板重叠。在我的情况下,当文本加载到名称=“item_Title”是太冗长stckpanel1和stackpanel2重叠 – JibW

+0

哦,我不会预料到这种行为。我会在一个小样本项目中尝试这个。 – MatthiasG

+0

我编辑我的帖子,添加一个似乎适用于我的示例代码。我只是不确定,如果我真的得到了你的问题,但因为它对我来说很好,请看看它。 – MatthiasG