我有一个继承自reactiveui.net的ReactiveObject
的视图模型,类似于
public sealed class TestViewModel : ReactiveObject
{
public sealed class NestedViewModel
{
private string _property;
public string VMProperty
{
get { return _property; }
set { this.RaiseAndSetIfChanged(ref _property, value); }
}
private string _suffix;
public string Suffic
{
get { return _suffix; }
set { this.RaiseAndSetIfChanged(ref _suffix, value); }
}
}
private NestedViewModel _nested = new NestedViewModel();
public Nested
{
get { return _nested; }¨
set { this.RaiseAndSetIfChanged(ref _nested, value); }
}
#if DEBUG
public TestViewModel() {
Nested.VMProperty = "Test string";
Nested.Suffix = "with suffix";
}
#endif
}
我可以得到以下内容来显示设计时和运行时:
<Page.DataContext>
<local:TestViewModel />
</Page.DataContext>
<TextBlock Text="{Binding Nested.VMProperty}" />
<TextBlock Text="{Binding Nested.Suffix}" />
但是当我尝试这样做时,设计时没有显示文字:
<Page.DataContext><!-- ... -->
<TextBlock>
<Run Text="{Binding Nested.VMProperty}" />
<Run Text="{Binding Nested.Suffix}" />
</TextBlock>
运行时它仍然有效,但我不想每次想要检查一些像素推送时都要部署到设备模拟器......
如何在设计时在<Run />
标记内显示这些属性?
答案 0 :(得分:2)
ReactiveUI框架的创建者Paul Betts提倡将样本数据硬编码到Page XAML中:
<TextBlock>
<Run Text="Test String" x:Name="VMproperty" />
<Run Text="with suffix" x:Name="Suffix" />
</TextBlock>
然后您可以在页面代码后面进行绑定:
this.OneWayBind(ViewModel, vm => vm.VMproperty, v => v.VMproperty.Text);
this.OneWayBind(ViewModel, vm => vm.Suffix, v => v.Suffix.Text);
这些ReactiveUI样式绑定会覆盖在XAML中硬编码的示例数据。因此,您可以在设计时获取样本数据,并在运行时获取数据绑定。
来源:https://groups.google.com/d/msg/reactivexaml/GrVHWm8tUuM/4EAxOsxc_LQJ
答案 1 :(得分:1)
如何在绑定中使用FallbackValue
?我经常使用它来检查绑定内容的外观和没有任何问题。