1

每当我绑定文本属性以查看模型属性时

<TextBlock Text="{Binding SomeExampleText}"/>

在设计器上,我在运行时文本出现的地方什么也看不到。当我使用 x:Bind 时:

<TextBlock Text="{x:Bind ViewModel.SomeExampleText}"/>

在设计器上,我看到“ViewModel.SomeExampleText”,有时由于空间不足(如果绑定路径太长),它不会显示全长。

有没有办法在设计器中显示自定义文本只是为了预览而不是绑定路径或没有如上所示?

4

2 回答 2

1

有一些方法可以专门为设计时创建视图模型。最简单的方法可能是这样的:

<TextBlock Text="{x:Bind ViewModel.SomeExampleText, FallbackValue='Hello!'}"/>

那一个在设计器中显示字符串“Hello”,同时带有Bindingx:Bind

因为Binding您可以像这样设置设计时数据上下文:

<Page
    ...
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:viewModels="using:MyNameSpace.ViewModels"
    d:DataContext="{d:DesignInstance Type=viewModels:DesignTimeViewModel, IsDesignTimeCreatable=True}"
    mc:Ignorable="d">

DesignTimeViewModel不需要与您的运行时视图模型有任何特定关系;它只需要具有相同名称的合适属性。如果您绑定到集合,这可能是您最好的选择。

于 2016-01-21T14:01:55.797 回答
0

为设计视图创建一个特定的视图模型,以便使用不会进入运行时环境的真实数据来调整视图的布局和样式。

由于 x:Bind 在代码隐藏中查找强类型数据源,因此您需要在设计视图中模拟该数据绑定路径。这是一种方法:

将 d:DataContext 属性应用于您的视图,将 Type 属性设置为您的视图。当“IsDesignTimeCreatable”为真时,它将创建一个新的代码隐藏实例。

d:DataContext="{d:DesignInstance Type=local:MainPage,IsDesignTimeCreatable=True}" 

您的代码隐藏可能具有 ViewModel 属性,该属性可以设置为带有假数据的设计时状态或带有真实数据的运行时状态。

此博客文章显示了一个示例: http: //fast417.blogspot.com/2016/06/uwp-design-preview-with-xbind.html

于 2016-06-16T08:27:01.393 回答