在XAML中绑定数据,以便在设计器视图中工作
本文关键字:视图 工作 XAML 绑定 数据 | 更新日期: 2023-09-27 17:50:59
我很难理解如何将我的歌曲List<>
绑定到ListBox
,而无需在后面的代码中设置ItemsSource
。虽然它工作,但我真的很想看到列表在实时视图设计器中工作。
在我的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
中的歌曲标题。
基本上需要对数据文件应用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预览中发生。