我有一个LongListSelector,我有下面的ViewModel
ViewModel:
List<ListData>
ListData:
Text
Image我需要细胞大小动态取决于一个ListData。
如果没有文本,我将隐藏图像并使GridCellSize = 50。如果有图像,GridCellSize应该是250,250;
看起来会是这样的:
+---------+ +---------+
| Text | | Text |
+---------+ +---------+
+---------+ +---------+
| Text | | Text |
+---------+ +---------+
+---------+ +---------+
| | | |
| | | |
| Image | | Image |
| | | |
| | | |
+---------+ +---------+
+---------+ +---------+
| | | |
| | | |
| Image | | Image |
| | | |
| | | |
+---------+ +---------+我尝试使用转换器更改GridCellSize,但对于LongListSelector,似乎GridCellSize必须是常量,并应用于所有元素。
有办法做到这一点吗?
发布于 2013-07-25 12:28:44
在一行中,我可以说,您可以将网格高度和宽度属性绑定到一些双重属性,并可以在logic..but上处理它--我还为您的logic.hope提供了一些代码,它可以帮助您。
所以首先做了一个ListData类,在这个类中,我做了一些属性,它将按项使用,..here类。
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属性将被绑定。
public ObservableCollection<ListData> ListOfData { get; set; }现在,我已经用data..here数据填充了这个集合,您的ListData类对象具有不同的属性值,这些属性将反映在LongListSelector项中,..i已经在我的主页构造函数中填充了它。
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,这是你的方便之处。
<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,它可以帮助您。
https://stackoverflow.com/questions/17856784
复制相似问题