WPF中的ReactiveUI:如何将命令从父级的ViewModel绑定到ItemsControl.ItemTemplate中的按钮?

时间:2019-05-12 06:52:17

标签: wpf reactiveui

这是YouIandReactiveUI

中的代码

是否有更优雅的方法来实现这一目标? 还是有什么方法可以使用IViewFor绑定代码?

                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <Grid>
                            <local:TweetMediaAttachmentView ViewModel="{Binding .}"/>
                            <Button
                                x:Name="removeButton"                                                                
                                Command="{Binding DataContext.RemoveAttachmentCommand, ElementName=attachmentsItemsControl}" />                                                            
                        </Grid>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>

2 个答案:

答案 0 :(得分:0)

这是一个已知问题。一种解决方案是使用RelativeSource,如下所示:Access parent DataContext from DataTemplate

答案 1 :(得分:0)

结合不同的选项,所有选项都将使用IViewFor功能。

首先是使用ReactiveUI的OneWayBind功能绑定到ItemsControl.ItemsSource时,如果不设置ItemTemplate,它将搜索关联的IViewfor<View model>

另一个您可以使用ItemTemplate并使用ViewModelViewHost控件并设置视图模型。这几乎与第一种方法相同。

对于命令绑定,我会将命令传递到视图模型中,因此您不必担心数据上下文绑定。

相关问题