Я создал пользовательский элемент управления с TextBox и кнопкой, но он не хочет использовать стиль родителя.Тем не менее, мой элемент управления имеет стиль родителя во время разработки, но во время выполнения стили исчезают.
Есть мой TextBoxButton.xaml
<Style x:Key="{x:Type Common:TextBoxExtension}" TargetType="{x:Type Common:TextBoxExtension}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Common:TextBoxExtension}">
<Border x:Name="border"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
SnapsToDevicePixels="True">
<DockPanel>
<Button DockPanel.Dock="Right" Padding="-3.0" Margin="2"
Width="{Binding ActualHeight, RelativeSource={RelativeSource AncestorType={x:Type TextBoxBase},Mode=FindAncestor}}"
Content="..."
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center"
Command="{TemplateBinding Command}"/>
<ScrollViewer Name="PART_ContentHost" Focusable="False"
HorizontalScrollBarVisibility="Hidden"
VerticalScrollBarVisibility="Hidden"/>
</DockPanel>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Также есть TextBoxExtension.cs
public class TextBoxExtension : TextBox
{
static TextBoxExtension()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(TextBoxExtension),
new FrameworkPropertyMetadata(typeof(TextBoxExtension)));
}
public static readonly DependencyProperty CommandProperty =
DependencyProperty.Register("Command", typeof(ICommand), typeof(TextBoxExtension),
new PropertyMetadata(null));
public ICommand Command
{
get { return (ICommand)GetValue(CommandProperty); }
set { SetValue(CommandProperty, value); }
}
}
Использование в окне
<Common:TextBoxExtension FontSize="14" Text="{Binding VaultPath, UpdateSourceTrigger=PropertyChanged}" Margin="5" Grid.Column="1" Grid.Row="2" />
<Common:TextBoxExtension FontSize="14" Command="{Binding SetLocalPath}" Text="{Binding LocalPath, UpdateSourceTrigger=PropertyChanged}" Margin="5" Grid.Column="1" Grid.Row="3" />
Что я ожидал получить
Что я получу, когдазапустите программу
Хотите добавить, что кнопки работают