背景
我希望在 XAML 设计器上在我的 UserControl
(RepositoryContainer
)中填充数据。
我创建了一个名为RepositoryContainerDesignData.xaml
的文件(它和RepositoryContainer.xaml
在同一个文件夹中),并将其设置为UserControl
的d:DataContext
。
但是,XAML 设计器显示属性名称而不是显示数据。
这是一个最简示例:
设计数据 (RepositoryContainerDesignData.xaml)
<local:RepositoryContainer xmlns:local="clr-namespace:SystemSpecs.View.UserControls"
Title="My Repository Title"
/>
用户控件 (RepositoryContainer.xaml)
<UserControl x:Class="SystemSpecs.View.UserControls.RepositoryContainer"
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"
xmlns:local="clr-namespace:SystemSpecs.View.UserControls"
mc:Ignorable="d"
d:DesignHeight="100" d:DesignWidth="500"
d:DataContext="{d:DesignData Source=RepositoryContainerDesignData.xaml}"
DataContext="{Binding RelativeSource={RelativeSource Self}}">
<Grid>
<TextBlock Text="{Binding Path=Title}" FontSize="24" Foreground="White" HorizontalAlignment="Center" />
</Grid>
</UserControl>
后台代码
using System.Windows.Controls;
namespace SystemSpecs.View.UserControls
{
public partial class RepositoryContainer : UserControl
{
public string Title { get; set; }
public RepositoryContainer()
{
InitializeComponent();
}
}
}
预期输出:
输出:
已尝试的方法:
- 将
IsDesignTimeCreatable
设置为true
: - 关闭Visual Studio并删除
.vs
文件夹 RepositoryContainerDesignData.xaml
的Build Action
为DesignData
环境信息:
- Windows 10 Pro x64
- Visual Studio Community 2015 (版本14.9.25431.01更新3)
- Microsoft .NET Framework 4.6.01586
- 更多信息请查看Pastebin RAW以保持帖子整洁
我是否遗漏了什么?
附注
如果我创建一个类(例如public class RepositoryContainerData
),创建一个名为Title
的属性,并将该类的实例设置为d:DataContext
(d:DataContext="{d:DesignInstance local:RepositoryContainerData, IsDesignTimeCreatable=True}"
),则可以按预期工作。