我无法理解如何将我的歌曲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
中的歌曲标题。
非常感谢先进。
答案 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预览中进行。