我有UserControl
显示文件信息。我希望使用视图模型模拟在visual studio designer中查看测试文件信息。这是XAML:
<Label Content="{Binding DateCreated}"/>
观看型号:
internal class ViewModel
{
public ViewModel(string pathToFile)
{
var file = new FileInfo(pathToFile);
this.DateCreated= file.CreationTime.ToShortDateString();
}
public string DateCreated{ get; set; }
}
在设计时,我使用视图模型模拟类在设计器中看到真实的文件信息:
internal class ViewModelMock : ViewModel
{
public ViewModelMock() : base(@"D:\Images\mock.png")
{
}
}
我通过d:DataContext
和d:DesignInstance
和
<UserControl ...
xmlns:mocks="clr-namespace:Company.Product.Mocks"
d:DataContext="{d:DesignInstance mocks:ViewModelMock, DesignTimeCreatable=True}">
虽然有效,但问题在于此@"D:\Images\mock.png"
硬编码值。一旦解决方案由TFS提供支持,我就需要将图像放入项目中,并相对于项目路径从ViewModelMock
引用此图像。
我该怎么做?
获取当前工作目录等简单方法可以提供&#39; C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Common7 \ IDE &#39;,我猜是因为这是位置负责visual studio designer的XDesProc.exe。
目前我正在使用 EnvDTE 方法描述in this questions:
var solutionFullName = ((EnvDTE.DTE)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.12.0")).Solution.FullName;
var projectPath = Path.Combine(Path.GetDirectoryName(solutionFullName), "ProjectFolderName");
但这有几乎相同的问题 - 硬编码&#34; VisualStudio.DTE.12.0&#34;常量(这意味着Visual Studio 2013),所以我仍然在寻找更好的解决方案。