gpt4 book ai didi

xaml - `` 在设计时没有数据绑定(bind)

转载 作者:行者123 更新时间:2023-12-04 02:24:48 25 4
gpt4 key购买 nike

我有一个继承自 ReactiveObject 的 View 模型来自 reactiveui.net , 就像是

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 /> 中在设计时标记?

最佳答案

ReactiveUI 框架的创建者 Paul Betts 主张将示例数据硬编码到 Page 的 XAML 中:

<TextBlock>
<Run Text="Test String" x:Name="VMproperty" />
<Run Text="with suffix" x:Name="Suffix" />
</TextBlock>

然后您可以在后面的页面代码中进行绑定(bind):
this.OneWayBind(ViewModel, vm => vm.VMproperty, v => v.VMproperty.Text);
this.OneWayBind(ViewModel, vm => vm.Suffix, v => v.Suffix.Text);

这些 ReactiveUI 样式绑定(bind)会覆盖在 XAML 中硬编码的示例数据。因此,您在设计时获得样本数据,在运行时获得数据绑定(bind)。

来源: https://groups.google.com/d/msg/reactivexaml/GrVHWm8tUuM/4EAxOsxc_LQJ

关于xaml - `<Run/>` 在设计时没有数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30300998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com