Avalonia DataGrid中Button始终禁用问题求助
核心问题出在你设置的DataGrid.IsReadOnly="True"——这个属性会强制禁用所有单元格内的交互控件,哪怕你手动给按钮设置IsEnabled="True"也无效。
解决方案一(推荐):全局取消DataGrid只读,单独设置列只读
把DataGrid的IsReadOnly改为False,然后给需要保持只读的列(比如文本列)单独设置IsReadOnly="True",这样模板列里的按钮就能正常交互了:
<Grid> <DataGrid CanUserSortColumns="False" Items="{Binding Players}"> <DataGrid.Columns> <!-- 示例:给其他需要只读的列单独设置IsReadOnly --> <DataGridTextColumn Header="玩家名称" Binding="{Binding PlayerName}" IsReadOnly="True"/> <DataGridTextColumn Header="等级" Binding="{Binding Level}" IsReadOnly="True"/> <DataGridTemplateColumn Header="" Width="100"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <StackPanel> <Button IsEnabled="{Binding IsDummy}" IsVisible="{Binding IsDummy}" Command="{Binding ToDoFunction}" HorizontalAlignment="Stretch" HorizontalContentAlignment="Center"> Recruit </Button> </StackPanel> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> </DataGrid.Columns> </DataGrid> </Grid>
额外检查项
除了上述修改,还要确认你的ToDoFunction命令是否正确实现:
- 必须是
ICommand类型(比如Avalonia自带的RelayCommand) - 确保
CanExecute方法返回true(如果命令的CanExecute返回false,按钮也会呈现禁用状态)
内容的提问来源于stack exchange,提问作者Doryael
相关产品推荐
相关产品推荐

