`<Run/">` не поддерживает привязку во время разработки
У меня есть модель представления, которая наследует от ReactiveObject
от 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 />
во время разработки?
Ответы
Ответ 1
Пол Беттс (Paul Betts), создатель инфраструктуры ReactiveUI, защищает образцы данных жесткого кодирования на странице 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
Ответ 2
Как насчет использования FallbackValue
в вашей привязке? Я часто использую его для проверки того, как будет выглядеть связанный контент, и у него не было никаких проблем.