You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Avalonia DataGrid中Button始终禁用问题求助

解决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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 01:40:04