在XAML中进行数据绑定,以便在Designer-view中工作?

时间:2013-01-08 19:52:51

标签: c# wpf visual-studio-2010 visual-studio xaml

我无法理解如何将我的歌曲List<>数据绑定到ListBox而无需在后面的代码中设置ItemsSource。 虽然它有效,但我真的希望看到List在liveview Designer中工作。

namespace App5
{
    class SongsData
    {
        public string Title { get; set; }
        public string Lyrics { get; set; }
    }
}

在我的MainPage.xaml.cs中:

        public MainPage()
        {
            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;
        }

在XAML中我有一个基本的ListBox:

<ListBox>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Title}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

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

有了上述内容,我必须调试程序以查看ListBox中的歌曲标题。

非常感谢先进。

2 个答案:

答案 0 :(得分:3)

您基本上需要将 DesignData 构建时动作应用于数据文件。可以在msdn找到非常全面的演练。

答案 1 :(得分:1)

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

示例:

SongListControl.cs:

UserControl

SongListControl.xaml:

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

然后在主窗口中:

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

构建项目时,构造函数初始化将在MainWindow预览中进行。