【发布时间】:2017-06-25 01:30:37
【问题描述】:
上下文
我希望我的UserControl (RepositoryContainer) 在 XAML 设计器上填满数据。
我创建了一个名为RepositoryContainerDesignData.xaml 的文件(它与RepositoryContainer.xaml 在同一文件夹中)并将其设置为d:DataContext 到UserControl。
但 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();
}
}
}
预期输出:
输出:
已经尝试过:
- Set
IsDesignTimeCreatableastrue: - 关闭 Visual Studio 并删除
.vs文件夹 -
RepositoryContainerDesignData.xamlBuild Action是DesignData
环境信息:
- Windows 10 专业版 x64
- Visual Studio 社区 2015(版本 14.9.25431.01 更新 3)
- Microsoft .NET Framework 4.6.01586
- Pastebin RAW 上的更多信息以保持帖子干净
我错过了什么吗?
PS
如果我创建一个类(例如public class RepositoryContainerData),创建一个名为Title 的属性并将该类的一个实例设置为d:DataContext (d:DataContext="{d:DesignInstance local:RepositoryContainerData, IsDesignTimeCreatable=True}"),它会按预期工作。
【问题讨论】:
-
“PS”部分的解决方案是正确的方法。您无需创建设计用户控件,而是创建设计数据。
标签: c# wpf visual-studio xaml