Listview 带有项目模板的windows phone 8.1列表视图
我想在Windows Phone 8.1应用程序中显示列表。我添加了listview并创建了项目模板Listview 带有项目模板的windows phone 8.1列表视图,listview,windows-phone-8.1,Listview,Windows Phone 8.1,我想在Windows Phone 8.1应用程序中显示列表。我添加了listview并创建了项目模板 <ListView x:Name="history" HorizontalAlignment="Left" Height="397" VerticalAlignment="Top" Width="381"> <ListView.Resources> <DataTemplate
<ListView x:Name="history" HorizontalAlignment="Left" Height="397" VerticalAlignment="Top" Width="381">
<ListView.Resources>
<DataTemplate x:Key="myCell">
<Grid x:Name="myGrid" Height="161" Width="389">
<TextBlock x:Name="title" HorizontalAlignment="Left" Margin="34,13,0,0" TextWrapping="Wrap" Text="Title" VerticalAlignment="Top" Height="52" Width="170" FontSize="48"/>
<TextBlock x:Name="content" HorizontalAlignment="Left" Margin="34,70,0,0" TextWrapping="Wrap" Text="content" VerticalAlignment="Top" Height="81" Width="345" FontSize="36"/>
</Grid>
</DataTemplate>
</ListView.Resources>
<ListView.ItemTemplate>
<StaticResource ResourceKey="myCell"/>
</ListView.ItemTemplate>
</ListView>
但我不能进入迈塞尔。有人能帮我吗 因为您使用的是ItemTemplate,所以需要使用Model创建项目并将其添加到ListView中
public class MyModel
{
public string title {get; set;}
public string content {get; set;}
}
然后像这样添加项目:
var item = new MyModel();
item.title = "some title";
item.content = "some content";
history.Add(item);
编辑
实际上,最好的方法是创建ObservableCollection
,并将其设置为代码中某个地方的ItemsSource of YourListView。例如,您可以使用ListView的Loaded事件:
history_Loaded(object sender, RoutedEventArgs e)
{
var historyCollection = new ObservableCollection<MyModel>();
history.ItemsSource = historyCollection;
}
<ListView x:Name="history" ItemsSource="{Binding}">
<ListView.Resources>
<DataTemplate x:Key="myCell">
<StackPanel>
<TextBlock x:Name="title" HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding Title, Mode=OneTime}" VerticalAlignment="Top" Style="{StaticResource TitleTextBlockStyle}" />
<TextBlock x:Name="content" HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding Content, Mode=OneTime}" VerticalAlignment="Top" Style="{StaticResource BodyTextBlockStyle}" />
</StackPanel>
</DataTemplate>
</ListView.Resources>
<ListView.ItemTemplate>
<StaticResource ResourceKey="myCell"/>
</ListView.ItemTemplate>
</ListView>
要了解更多有关
observateCollection
及其与List
的区别,您可能需要阅读本文-。数据绑定有两个目的:您需要在代码背后提供数据,并且需要从Xaml绑定到它。如果你只做一个,那么就没有连接
要从代码中提供数据,需要创建数据对象的集合,并将其放置在ListView可以看到的上下文中。我们可以直接将其设置为ListView的ItemsSource,也可以将ItemsSource绑定到ListView的DataContext。您选择的位置取决于您希望共享此数据的距离。通常,您会为页面设置一个整体DataContext,并让ListView绑定到其中的一个子集,但为了简单起见,我们只需将其设置为ListView的DataContext:
class myCell
{
public string Title { get; set; }
public string Content { get; set; }
}
public sealed partial class MainPage : Page
{
// Create a collection of myCells. ObservableCollection will fire
// change notifications so we can add new cells later and the binding
// will update
ObservableCollection<myCell> myCells = new ObservableCollection<myCell>();
public MainPage()
{
this.InitializeComponent();
this.NavigationCacheMode = NavigationCacheMode.Required;
// Generate some dummy data
for (int i=0;i<100;i++)
{
myCells.Add(new myCell() { Title = "Cell " + i, Content = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." });
}
// Set the cells to the Page's DataContext. All controls on
// the page will inherit this.
this.DataContext = myCells;
}
}
classmycell
{
公共字符串标题{get;set;}
公共字符串内容{get;set;}
}
公共密封部分类主页面:第页
{
//创建菌丝体集合。ObservableCollection将启动
//更改通知,以便我们以后可以添加新单元格和绑定
//将更新
ObservableCollection菌丝=新的ObservableCollection();
公共主页()
{
this.InitializeComponent();
this.NavigationCacheMode=NavigationCacheMode.Required;
//生成一些虚拟数据
对于(inti=0;iThanks),但当我添加一个项目时,文本没有改变。它看起来像静态模板text@ArnasLiudžius,我会编辑我的答案,以包括显示新项目的解决方案。我感谢您的答案,但文本仍然没有更改。Item.title和内容没有引用我在模板中创建的textblocs(我认为是这样)@ArnasLiudžius定义和使用INotifyPropertyChanged,您还可以查看。@ArnasLiudžius,对不起!忘记了xaml部分。请再次编辑答案。感谢您的回答:)
class myCell
{
public string Title { get; set; }
public string Content { get; set; }
}
public sealed partial class MainPage : Page
{
// Create a collection of myCells. ObservableCollection will fire
// change notifications so we can add new cells later and the binding
// will update
ObservableCollection<myCell> myCells = new ObservableCollection<myCell>();
public MainPage()
{
this.InitializeComponent();
this.NavigationCacheMode = NavigationCacheMode.Required;
// Generate some dummy data
for (int i=0;i<100;i++)
{
myCells.Add(new myCell() { Title = "Cell " + i, Content = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." });
}
// Set the cells to the Page's DataContext. All controls on
// the page will inherit this.
this.DataContext = myCells;
}
}
<ListView x:Name="history" ItemsSource="{Binding}">
<ListView.Resources>
<DataTemplate x:Key="myCell">
<StackPanel>
<TextBlock x:Name="title" HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding Title, Mode=OneTime}" VerticalAlignment="Top" Style="{StaticResource TitleTextBlockStyle}" />
<TextBlock x:Name="content" HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding Content, Mode=OneTime}" VerticalAlignment="Top" Style="{StaticResource BodyTextBlockStyle}" />
</StackPanel>
</DataTemplate>
</ListView.Resources>
<ListView.ItemTemplate>
<StaticResource ResourceKey="myCell"/>
</ListView.ItemTemplate>
</ListView>