Browse Source

Use FuncDataTemplate

pull/2560/head
artyom 7 years ago
parent
commit
d2574b383a
  1. 25
      src/Avalonia.ReactiveUI/AutoDataTemplateBindingHook.cs

25
src/Avalonia.ReactiveUI/AutoDataTemplateBindingHook.cs

@ -1,6 +1,8 @@
using System; using System;
using System.Linq; using System.Linq;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Controls.Templates;
using Avalonia.Layout;
using Avalonia.Markup.Xaml; using Avalonia.Markup.Xaml;
using Avalonia.Markup.Xaml.Templates; using Avalonia.Markup.Xaml.Templates;
using ReactiveUI; using ReactiveUI;
@ -14,19 +16,18 @@ namespace Avalonia.ReactiveUI
/// </summary> /// </summary>
public class AutoDataTemplateBindingHook : IPropertyBindingHook public class AutoDataTemplateBindingHook : IPropertyBindingHook
{ {
private static Lazy<DataTemplate> DefaultItemTemplate { get; } = new Lazy<DataTemplate>(() => private static Lazy<FuncDataTemplate> DefaultItemTemplate { get; } = new Lazy<FuncDataTemplate>(() =>
{ {
var template = @" return new FuncDataTemplate<object>(x =>
<DataTemplate xmlns='https://github.com/avaloniaui' {
xmlns:reactiveUi='http://reactiveui.net'> var control = new ViewModelViewHost();
<reactiveUi:ViewModelViewHost var context = control.GetObservable(Control.DataContextProperty);
ViewModel='{Binding Mode=OneWay}' control.Bind(ViewModelViewHost.ViewModelProperty, context);
VerticalContentAlignment='Stretch' control.HorizontalContentAlignment = HorizontalAlignment.Stretch;
HorizontalContentAlignment='Stretch' /> control.VerticalContentAlignment = VerticalAlignment.Stretch;
</DataTemplate>"; return control;
},
var loader = new AvaloniaXamlLoader(); true);
return (DataTemplate)loader.Load(template);
}); });
/// <inheritdoc/> /// <inheritdoc/>

Loading…
Cancel
Save