从 Avalonia 中的 ItemsControl 按钮绑定到 MainViewModel 命令
Binding to a MainViewModel command from an ItemsControl Button in Avalonia
我正在尝试从 Avalonia 中的 ItemsControl 按钮创建 ReactiveUI MVVM 绑定
在 WPF 中,这将通过 Freezable BindingProxy 完成。但是,看起来 Freezable 在 Avalonia 中不可用。应该如何创建这样的绑定?
<ItemsControl Items="{Binding MyQueue}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="My Button"
HorizontalAlignment="Center" VerticalAlignment="Center"
CommandParameter="{Binding}"
Command="{Binding MySpecialCmd}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
参考文献:
https://thomaslevesque.com/2011/03/21/wpf-how-to-bind-to-data-when-the-datacontext-is-not-inherited/
非常感谢 AvaloniaUI gitter 上的@maxkatz6。
这是解决方案:
{Binding $parent[ItemsControl].DataContext.MySpecialCmd}
<ItemsControl Items="{Binding MyQueue}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="My Button"
HorizontalAlignment="Center" VerticalAlignment="Center"
CommandParameter="{Binding}"
Command="{Binding $parent[ItemsControl].DataContext.MySpecialCmd}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
我正在尝试从 Avalonia 中的 ItemsControl 按钮创建 ReactiveUI MVVM 绑定 在 WPF 中,这将通过 Freezable BindingProxy 完成。但是,看起来 Freezable 在 Avalonia 中不可用。应该如何创建这样的绑定?
<ItemsControl Items="{Binding MyQueue}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="My Button"
HorizontalAlignment="Center" VerticalAlignment="Center"
CommandParameter="{Binding}"
Command="{Binding MySpecialCmd}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
参考文献:
https://thomaslevesque.com/2011/03/21/wpf-how-to-bind-to-data-when-the-datacontext-is-not-inherited/
非常感谢 AvaloniaUI gitter 上的@maxkatz6。 这是解决方案:
{Binding $parent[ItemsControl].DataContext.MySpecialCmd}
<ItemsControl Items="{Binding MyQueue}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="My Button"
HorizontalAlignment="Center" VerticalAlignment="Center"
CommandParameter="{Binding}"
Command="{Binding $parent[ItemsControl].DataContext.MySpecialCmd}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>