Listview 带有项目模板的windows phone 8.1列表视图

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

我想在Windows Phone 8.1应用程序中显示列表。我添加了listview并创建了项目模板

 <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>