在XAML中绑定数据,以便在设计器视图中工作

本文关键字:视图 工作 XAML 绑定 数据 | 更新日期: 2023-09-27 17:50:59

我很难理解如何将我的歌曲List<>绑定到ListBox,而无需在后面的代码中设置ItemsSource。虽然它工作,但我真的很想看到列表在实时视图设计器中工作。

<>之前名称空间App5{类SongsData{公共字符串标题{获取;设置;}公共字符串歌词{get;设置;}}}之前

在我的mainpage . example .cs:

<>之前公共主页(){this.InitializeComponent ();List Songs = new List();歌曲。Add(new SongsData() {Title = "Your Song", Lyrics = "It's little bit funny. "});歌曲。Add(new SongsData() {Title = "Rocket Man", Lyrics = "I'm the Rocket maaan .."});SongsListBox。ItemsSource = Songs;}之前在XAML中,我有一个基本的ListBox:
<ListBox>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Title}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

可以一个友好的人请帮助我了解什么改变-希望为什么-让歌曲标题显示在ListBox在Visual Studio的实时视图设计器?

有了上面的内容,我必须调试程序才能看到ListBox中的歌曲标题。

在XAML中绑定数据,以便在设计器视图中工作

基本上需要对数据文件应用DesignData构建时操作。一个非常全面的演练可以在msdn.

找到。

一个快速而简单的解决方案是将ListBox移动到新的UserControl,将列表初始化放在UserControl的构造函数中,然后将UserControl的实例添加到主表单中。

的例子:

SongListControl.cs:

namespace App5
{
    public parital class SongListControl : userControl
    {
        this.InitializeComponent();
        List Songs = new List();
        Songs.Add(new SongsData() { Title = "Your Song", Lyrics = "It's a little bit funny.." });
        Songs.Add(new SongsData() { Title = "Rocket Man", Lyrics = "I'm the Rocket Maaaan.." });
        SongsListBox.ItemsSource = Songs;
    }
}

SongListControl。xaml:

<UserControl x:Class="App5.SongListControl"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <ListBox>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Title}" />
            </DataTemplate>
        </ListBox.ItemTemplate>        
    </ListBox>
</UserControl>

然后在主窗口:

<Window x:Class="App5.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:app="clr-namespace:App5"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <app:SongListControl />
    </Grid>
</Window>

当您构建项目时,构造函数初始化将在MainWindow预览中发生。