Mat*_*int 3 data-binding silverlight textblock mvvm
我的XAML中有一个TextBlock,它的文本绑定到我的viewmodel中的属性.
<TextBlock x:Name="SomeText" Text="{Binding TheTextProperty}" />
Run Code Online (Sandbox Code Playgroud)
这工作正常,但在设计时,没有视图模型,因此该属性不可解析且文本为空.这在设计器中很难处理,因为它没有显示可见文本.
如何在设计时指定一些默认文本?
小智 12
也许你可以试试
<TextBlock x:Name="SomeText" Text="{Binding TheTextProperty, FallbackValue='Some other text'}" />
Run Code Online (Sandbox Code Playgroud)
如此处所述.
小智 7
您还可以使用设计时数据在解决方案中提供丰富的绑定体验.它有点难以设置和运行,但这是要点.
首先,在xaml中创建DataContext.将新的Xml文档添加到您的解决方案(根是一个好地方)并为其提供.xaml扩展名.让我们为这个例子调用这个文件"foo.xaml".
在此文件中,删除所有XML并开始创建DataContext类型的实例.例如,如果您的DataContext是一个字符串(非常简单的示例),您的文件将如下所示:
<string xmlns="clr-namespace:System;assembly=mscorlib">LOL!</string>
Run Code Online (Sandbox Code Playgroud)
你可能看起来像
<ViewModel xmlns="clr-namespace:MyNamespace">
<ViewModel.MyObservableCollection>
<MyModel Name="foo" />
<!-- etc -->
Run Code Online (Sandbox Code Playgroud)
将此文件上的Build Action设置为DesignDataWithDesignTimeCreatableTypes:

接下来,在View中,将以下命名空间和属性添加到Window/UserControl的根目录:
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DataContext="{d:DesignData Source=foo.xaml}"
Run Code Online (Sandbox Code Playgroud)
Source是相对于当前文件.所以,如果您的解决方案看起来像
你会设置Source为../Data/foo.xaml.
还有其他方法可以创建DesignData上下文,具体取决于您的ViewModel是否可以在设计时实例化,等等.
| 归档时间: |
|
| 查看次数: |
2318 次 |
| 最近记录: |