动态Stackpanel样式wp7

时间:2011-12-07 11:03:11

标签: windows-phone-7 dynamic styles stackpanel

我为每个项目创建了一个包含4张图片的列表框。它工作得很快,而且它的所有甜蜜和花花公子,但我不知道如何根据屏幕分辨率做这个dinamicaly。

所以目前我有连续4张图片90x90 + 5边距,但是如果屏幕分辨率不够大,只支持4张图片3怎么办?例如,如果我倾斜手机,而我是红色的,他们也将推出320×480分辨率。

    <ListBox Height="646" HorizontalAlignment="Left" Margin="6,19,0,0" Name="MainListbox" VerticalAlignment="Top" Width="444" ScrollViewer.VerticalScrollBarVisibility="Visible" >
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <VirtualizingStackPanel Orientation="Vertical"/>
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
    </ListBox>

    private void GetDataToBind(List<string> images, int spliter)
    {

        for (int i = spliter; i < images.Count; i += spliter)
        {
            StackPanel temp = new StackPanel();
            temp.Orientation = System.Windows.Controls.Orientation.Horizontal;
            for (int j = i - spliter; j < i && j < images.Count + spliter; j++)                  
            {
                Grid tempGrid = new Grid();
                Rectangle temprect = new Rectangle();
                temprect.Fill = new SolidColorBrush(Colors.White);
                temprect.Height = 90;
                temprect.Width = 90;
                tempGrid.Children.Add(temprect);
                tempGrid.Children.Add(GetImageSourceFromString(images[j]));
                temp.Children.Add(tempGrid);

            }
            MainListbox.Items.Add(temp);
        }

    }

int splitter确定一行中有多少张图片。

解决方案我对包装面板,LazyListbox不感兴趣。有人知道用动态风格或优雅的东西来解决这个问题吗?

最好的问候

2 个答案:

答案 0 :(得分:0)

所有WP7设备都具有相同的屏幕分辨率480x800。您不必担心某些图像不适合屏幕。

答案 1 :(得分:0)

正如Ku6opr所说,所有设备的特定屏幕分辨率为480x800。随着未来推出低成本设备,这种情况将发生变化,但它们也将具有严格定义的分辨率(320x480)。

实际上,您将拥有2种屏幕格式。然后,询问设备的分辨率和相应的样式将是一件简单的事情。但它不需要是动态的 - 您可以设置2种样式(每种分辨率一种),然后根据报告的分辨率应用样式。