使用 ReactiveUI 中的代码隐藏在 ListBox 内绑定数据

Zel*_*lid 5 reactiveui

我有 WPF 列表框:

<ListBox Name="FileDownloads" SelectionMode="Extended">
  <ListBox.ItemTemplate>
    <DataTemplate>
      <TextBlock Name="Url" Text="{Binding Url}" />
    </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>
Run Code Online (Sandbox Code Playgroud)

我喜欢使用后面的代码按名称绑定 ListBox 的能力:this.OneWayBind(ViewModel, vm => vm.DownloadManager.FileDownloads, v => v.FileDownloads.ItemsSource);在代码隐藏中进行 绑定有助于重构。

有没有办法使用代码隐藏在列表框内绑定 Url texbox?

Ana*_*tts 6

有没有办法使用代码隐藏在列表框内绑定 Url 文本框?

现在不行。您可以像现在一样使用 XAML 绑定,也可以将数据模板放在 UserControls 中。

这种比较麻烦的方法的一个安慰是,如果您注册您的数据模板 UserControls 并对其实施IViewFor<TViewModel>

Splat.Locator.CurrentMutable.Register(typeof(MyView), typeof(IViewFor<MyViewModel>));
Run Code Online (Sandbox Code Playgroud)

然后,您可以简单地将 ListBox 编写为:

<ListBox Name="FileDownloads" SelectionMode="Extended" />
Run Code Online (Sandbox Code Playgroud)

此行将自动为您连接一个 DataTemplate:

this.OneWayBind(ViewModel, vm => vm.DownloadManager.FileDownloads, v => v.FileDownloads.ItemsSource);
Run Code Online (Sandbox Code Playgroud)