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

Loading…
Cancel
Save