Я относительно новый в WPF, мой XAML-файл еще более сложный и запутанный, потому что некоторый код часто повторяется. Есть ли какой-нибудь простой способ сделать код лучше и короче? Например, у меня есть DataGrid, где DataGridColumnTemplate всегда одинаковый, и только его источник данных и имя заголовка разные.Как избежать повторения стилей в WPF
<DataGridTemplateColumn Header="Web">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<CheckBox Grid.Column="0" Margin="4,0" IsChecked="{Binding Webs.IsSelected,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
<CheckBox.Style>
<Style TargetType="CheckBox">
<Style.Triggers>
<DataTrigger Binding="{Binding Webs}" Value="{x:Null}">
<Setter Property="IsEnabled" Value="false"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</CheckBox.Style>
</CheckBox>
<Button Grid.Column="1" Content="Detail" Margin="3,1" />
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Flange">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<CheckBox Grid.Column="0" Margin="4,0" IsChecked="{Binding Flanges.IsSelected,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
<CheckBox.Style>
<Style TargetType="CheckBox">
<Style.Triggers>
<DataTrigger Binding="{Binding Flanges}" Value="{x:Null}">
<Setter Property="IsEnabled" Value="false"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</CheckBox.Style>
</CheckBox>
<Button Grid.Column="1" Content="Detail" Margin="3,1" />
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Best вы можете сделать здесь перенести ваш '' DataTemplate' в CellTemplate' к 'Resources'. – AnjumSKhan