Итак, я создал свой собственный класс с именем ComboBoxUltra
, и он наследуется от ComboBox
в System.Windows.Controls
.
Я перенастраиваю его и мне нужна помощь, чтобы узнать, как установить значение Stroke
для Rectangle
из FocusVisualStyle
на новое DependencyProperty
с помощью ComboBoxUltra
.
Это то, что у меня есть и оно не работает.У меня есть другие вещи, определенные, если нужно, чтобы опубликовать это здесь ... Но это довольно долго.
В Xaml у меня есть:
<Style x:Key="ComboBoxFocusVisual">
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<Rectangle SnapsToDevicePixels="true"
Stroke="{Binding RelativeSource={RelativeSource AncestorType={x:Type controls:ComboBoxPro}, AncestorLevel=1}, Path=FocusedBorderBrush}"
StrokeThickness="1" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type controls:ComboBoxUltra}">
<Setter Property="FocusVisualStyle" Value="{StaticResource ComboBoxFocusVisual}" />
<Setter Property="Background" Value="{StaticResource ComboBox.Static.Background}" />
<Setter Property="BorderBrush" Value="{StaticResource ComboBox.Static.Border}" />
<Setter Property="Foreground" Value="{StaticResource {x:Static SystemColors.WindowTextBrushKey}}" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto" />
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" />
<Setter Property="Padding" Value="6,3,5,3" />
<Setter Property="ScrollViewer.CanContentScroll" Value="true" />
<Setter Property="ScrollViewer.PanningMode" Value="Both" />
<Setter Property="Stylus.IsFlicksEnabled" Value="False" />
<Setter Property="Template" Value="{StaticResource ComboBoxTemplate}" />
<Setter Property="FontSize" Value="{DynamicResource TextFontSizeNormal}" />
<Style.Triggers>
<Trigger Property="IsEditable" Value="true">
<Setter Property="IsTabStop" Value="false" />
<Setter Property="Padding" Value="2" />
<Setter Property="Template" Value="{StaticResource ComboBoxEditableTemplate}" />
</Trigger>
</Style.Triggers>
</Style>
И в моем ComboBoxUltra
классе у меня есть DependencyProperty
как ...
public static readonly DependencyProperty FocusedBorderBrushProperty =
DependencyProperty.Register(nameof(FocusedBorderBrush), typeof(Brush), typeof(ComboBoxUltra),
new FrameworkPropertyMetadata(Brushes.Orange, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));
public Brush FocusedBorderBrush
{
get => (Brush)GetValue(FocusedBorderBrushProperty);
set => SetValue(FocusedBorderBrushProperty, value);
}
Я пробовалудаление FocusVisualStyle
И просто сделайте Trigger
на IsKeyboardFocusWithin
, и установите кисть границы с помощью установщика, но это не сработало.
Любая помощь приветствуется.