首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LongListSelector:动态GridCellSize

LongListSelector:动态GridCellSize
EN

Stack Overflow用户
提问于 2013-07-25 11:31:48
回答 1查看 1.3K关注 0票数 2

我有一个LongListSelector,我有下面的ViewModel

代码语言:javascript
复制
ViewModel: 
    List<ListData>

ListData:
    Text
    Image

我需要细胞大小动态取决于一个ListData。

如果没有文本,我将隐藏图像并使GridCellSize = 50。如果有图像,GridCellSize应该是250,250;

看起来会是这样的:

代码语言:javascript
复制
 +---------+   +---------+
 |  Text   |   |  Text   |
 +---------+   +---------+
 +---------+   +---------+
 |  Text   |   |  Text   |
 +---------+   +---------+
 +---------+   +---------+
 |         |   |         |
 |         |   |         |
 |  Image  |   |  Image  |
 |         |   |         |
 |         |   |         |
 +---------+   +---------+
 +---------+   +---------+
 |         |   |         |
 |         |   |         |
 |  Image  |   |  Image  |
 |         |   |         |
 |         |   |         |
 +---------+   +---------+

我尝试使用转换器更改GridCellSize,但对于LongListSelector,似乎GridCellSize必须是常量,并应用于所有元素。

有办法做到这一点吗?

EN

回答 1

Stack Overflow用户

发布于 2013-07-25 12:28:44

在一行中,我可以说,您可以将网格高度和宽度属性绑定到一些双重属性,并可以在logic..but上处理它--我还为您的logic.hope提供了一些代码,它可以帮助您。

所以首先做了一个ListData类,在这个类中,我做了一些属性,它将按项使用,..here类。

代码语言:javascript
复制
 public class ListData
{


    public double height { get; set; }
    public double width { get; set; }

    public string text { get; set; }
    public string ImagePath { get; set; }
    public Visibility isTextVisible { get; set; }
    public Visibility isImageVisible { get; set; }

}

现在我已经创建了一个ObservableCollection,您的LongListSelector itemsSource属性将被绑定。

代码语言:javascript
复制
  public ObservableCollection<ListData> ListOfData { get; set; }

现在,我已经用data..here数据填充了这个集合,您的ListData类对象具有不同的属性值,这些属性将反映在LongListSelector项中,..i已经在我的主页构造函数中填充了它。

代码语言:javascript
复制
 public MainPage()
    {
        InitializeComponent();
        ListOfData = new ObservableCollection<ListData>();
        ListData sd = new ListData();
        sd.ImagePath = "/Assets/1.jpg";
        sd.text = "";
        sd.isTextVisible = Visibility.Collapsed;
        sd.isImageVisible = Visibility.Visible;
        sd.height = 250;
        sd.width = 250;

        ListData sd1 = new ListData();
        sd1.ImagePath = "/Assets/1.jpg";
        sd1.text = "afhjkahfjkahjkghadgjkgjkv";
        sd1.isTextVisible = Visibility.Visible;
        sd1.isImageVisible = Visibility.Collapsed;
        sd1.height = 50;
        sd1.width = 50;

        ListOfData.Add(sd);
        ListOfData.Add(sd1);
        ListOfData.Add(sd);
        ListOfData.Add(sd1);
        ListOfData.Add(sd);
        ListOfData.Add(sd1);
        ListOfData.Add(sd);
        ListOfData.Add(sd1);

        this.DataContext = this;

        // Sample code to localize the ApplicationBar
        //BuildLocalizedApplicationBar();
    }

现在一切都准备好了.我有数据,DataContext of the Page是set..so,剩下的是你的xaml页面,其中LingListSelector是defined..here,我绑定了每个propety ..just,这是你的方便之处。

代码语言:javascript
复制
 <phone:LongListSelector Grid.Row="0" ItemsSource="{Binding ListOfData}">
        <phone:LongListSelector.ItemTemplate>
            <DataTemplate>
                <Grid Height="{Binding height}" Width="{Binding width}" >
                    <TextBlock Text="{Binding Path=text}" Visibility="{Binding isTextVisible}"/>
                    <Image Source="{Binding Path=ImagePath}" Visibility="{Binding isImageVisible}"  />
                </Grid>
            </DataTemplate>
        </phone:LongListSelector.ItemTemplate>
    </phone:LongListSelector>

here..all事物是done..it,需要您的逻辑now..hope,它可以帮助您。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17856784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档