Вы можете добавить свернутые (скрытые кнопки, которые не занимают места) в ячейки и делать их видимыми при необходимости.
Это поведение также можно привязать к некоторому условию с помощью IValueConverter для свойства видимости.
ОБНОВЛЕНИЕ tx к комментарию Я знаю, что есть встроенный конвертер, так что сделка:
- Вы добавляете этот конвертер в свои ресурсы окна
<Window.Resources>
<BooleanToVisibilityConverter x:Key="myConverter"/>
</Windos.Resources>
- вы используете его в своей кнопке
<Button Visibility="{Binding Path=myCondtion,Converter={StaticResource myConverter}}"/>
где myContition - это свойство, которое вы должны создать в своем классе. Значение этого свойства должно быть истинным, если вы хотите, чтобы ваша кнопка отображалась, или ложным, если вы хотите, чтобы оно было скрытым.