Я создаю пользовательский элемент управления DataGrid, который имеет свойство ShowCloneColumn. Если вы установите для этого свойства значение true, DataGrid должен добавить еще один столбец с кнопкой.Пользовательский WPF DataGrid с необязательным столбцом кнопки
Класс, который я создал, получен из DataGrid и реализовал свойство Dependency, ShowCloneColumn.
public static readonly DependencyProperty ShowCloneColumnProperty =
DependencyProperty.Register("ShowCloneColumn",
typeof(bool),
typeof(CloneRowDataGrid),
new FrameworkPropertyMetadata(false,
FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,
OnShowCloneColumnPropertyChanged));
public bool ShowCloneColumn
{
get { return (bool) GetValue(ShowCloneColumnProperty); }
set { SetValue(ShowCloneColumnProperty, value); }
}
В Generic.xaml У меня есть следующий стиль.
<!-- Somewhere in here a button column should be declared? -->
<Style TargetType="{x:Type uiControls:CloneRowDataGrid}" BasedOn="{StaticResource {x:Type DataGrid}}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type uiControls:CloneRowDataGrid}">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
</Border>
<ControlTemplate.Triggers>
<Trigger Property="ShowCloneColumn" Value="True">
<!-- Show clone column, a column with a button -->
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Я не настолько силен, но с шаблонами и пользовательское управления, так что я не уверен, куда добавить столбец кнопки, так что он будет виден, когда кто-то использует CloneRowDataGrid и устанавливает свойство зависимостей ShowCloneColumn в правда.