Сначала создайте модель для вывода.
Затем создайте наблюдаемую коллекцию вашей модели как свойство в вашем коде за
public ObservableCollection<YourModel> Collection { get; private set; }
public Window() {
Collection = GetYourData();
InitializeComponent();
}
После этого вы можете привязать ее к DataGrid, напримерthis
<DataGrid x:Name="YourTable" ItemsSource="{Binding ElementName=YourWindow, Path=Collection}">
<DataGrid.Columns>
<DataGridTextColumn Header="Example" Binding="{Binding ModelProperty}"/>
<DataGridTemplateColumn Header="Your Button">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content="Your Button">
<Button.Style>
<Style>
<Setter Property="Button.Visibility" Value="Hidden"/>
<Style.Triggers>
<DataTrigger Binding="{Binding YourDependingModelProperty}" Value="YourDesiredValue">
<Setter Property="Button.Visibility" Value="Visible"/>
<EventSetter Event="Click" Handler="YourClickEvent"/>
</DataTrigger>
<!-- You can add more triggers here -->
</Style.Triggers>
</Style>
</Button.Style>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
Этот код не проверен, но, возможно, вам стоит попробовать