Если вы хотите выбрать один из нескольких стилей, в док-менеджере используется свойство LayoutItemContainerStyleSelector , в котором используется Выбор стиля .
С помощью этого селектора стилей вы можете выбрать, какой стиль применять в зависимости от того, является ли объект LayoutAnchorableItem или другим типом LayoutItem.
public class MyStyleSelector : StyleSelector
{
public Style DefaultStyle { get; set; }
public Style CustomStyle { get; set; }
public override Style SelectStyle(object item, DependencyObject container)
{
if (item is LayoutAnchorableItem)
{
return CustomStyle;
}
return DefaultStyle;
}
}
Если вы хотите объединить один установщик стиля с другим стилем, вы можете использовать свойство BasedOn . Это работает, потому что LayoutAnchorableItem наследует LayoutItem. При этом вы можете создать стиль, основанный на другом стиле, чтобы он наследовал все сеттеры. Ресурсы будут выглядеть так:
<Style TargetType="{x:Type dockctrl:LayoutItem}" x:Key="DefaultStyle">
<Setter Property="Title" Value="{Binding Model.Title}" />
<Setter Property="CloseCommand" Value="{Binding Model.CloseCommand}" />
<Setter Property="CanClose" Value="{Binding Model.CanClose}" />
<Setter Property="IsSelected" Value="{Binding Model.IsSelected}" />
</Style>
<Style TargetType="{x:Type dockctrl:LayoutAnchorableItem}" BasedOn="{StaticResource DefaultStyle}" x:Key="CustomStyle">
<Setter Property="Visibility" Value="{Binding Model.IsVisible, ConverterParameter={x:Static Visibility.Hidden}, Converter={StaticResource btvc}, Mode=TwoWay}" />
</Style>
<local:MyStyleSelector DefaultStyle="{StaticResource DefaultStyle}" CustomStyle="{StaticResource CustomStyle}" x:Key="MyStyleSelector" />
Теперь вы можете заполнить диспетчер стыковки новым селектором стиля.
<dock:DockingManager LayoutItemContainerStyleSelector="{StaticResource MyStyleSelector}" ...
Вы можете опустить селектор стилей и удалить ключи из ресурсов. Обратите внимание, что эти стили будут применяться ко всем дочерним элементам, а это не то, чего вы обычно хотите.