简体   繁体   中英

Dynamic Stackpanel Style wp7

I've created a listbox with 4 pictures for every item. It is working fast and its all sweet and dandy, but I don't know how to do this dinamicaly depending from screen resolution.

So currently I have 4 pictures in a row 90x90 + 5 margin, but what if the screen resolution isn't big enough to support 4 pictures only 3? For example if I tilt the phone, and I've red they are going to introduce 320×480 resolution as well.

    <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 determinates how many pictures are in a row.

Solutions I'm not interested wrap panel, LazyListbox. Does someone know a way to solve this with Dynamic style or something elegant?

Best Regards

All WP7 devices have the same screen resolution 480x800. You don't need to afraid that some images don't fit to screen.

As Ku6opr says, all devices have a specific screen resolution of 480x800. This is set to change with the introduction of lower cost devices in the future, but they will also have a rigidly defined resolution (320x480).

In effect what you will have is 2 screen formats to work with. It would then be a simple matter to interrogate the device for the resolution, and style accordingly. It doesn't need to be dynamic, though - you can set up 2 styles (one per resolution) and then apply the styling according to the resolution reported.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM