我现在正在摆弄Avalonia UI,在列表框中实现编辑按钮时遇到了麻烦。
该按钮应仅在选定项时可见,并应执行ViewModel中定义的名为EditCommand的ICommand。可见性绑定工作得很好,但命令绑定却不行,我似乎无法找出原因。
<ListBox Name="ListBoxDisplay" ItemsSource="{Binding ObservableCollection}" SelectedItem="{Binding SelectedItem}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid ColumnDefinitions="2*, *, *">
[snipped listbox content that's not relevant]
<Button Grid.Column="2" IsVisible="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}, Path=IsSelected}"
Command="{Binding ElementName=ListBoxDisplay, Path=DataContext.EditCommand}">
Edit
</Button>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
已尝试使用RelativeSource将其绑定(绑定到ListBox或整个UserControl)并直接绑定到EditCommand。
错误总是相同的:
Unable to resolve property or method of name 'EditCommand' on type 'System.Object'.
任何帮助将不胜感激!
1条答案
按热度按时间enyaitl31#
因此,在这些情况下,我用来绑定到祖先的viewmodel属性的方式如下:
然而,上次我尝试Avalonia 11时,我也遇到了类似的问题,我在他们的文档中找到了答案-我必须添加显式强制转换
另外,如果按钮不在另一个数据模板中,则可以直接绑定到属性
IsVisible="{Binding IsSelected}"