如何将焦点样式添加到WPF中的可编辑组合框
我一直在研究如何设置组合框的样式,但在进入可编辑的组合框时,我无法创建焦点效果。无论何时,如何将焦点样式添加到WPF中的可编辑组合框,wpf,xaml,combobox,styling,Wpf,Xaml,Combobox,Styling,我一直在研究如何设置组合框的样式,但在进入可编辑的组合框时,我无法创建焦点效果。无论何时,组合框接收到焦点,都应进入编辑模式,并且组件应具有焦点样式 基本的问题是,每当我进入编辑模式时,真正有焦点的不是周围的组合框,但是文本子组件和我无法在文本组件上创建一个触发器,它修改了组合框的边框样式,因为我不知道如何从触发器引用父组件 我已尝试在文本框或样式触发器上添加控制模板触发器。我试图通过名称或使用TemplateBinding选项来引用组合框,但没有任何运气。请举一个简单的例子。将IsKeyboa
组合框
接收到焦点,都应进入编辑模式,并且组件应具有焦点样式
基本的问题是,每当我进入编辑模式时,真正有焦点的不是周围的组合框
,但是文本子组件和我无法在文本组件上创建一个触发器
,它修改了组合框
的边框样式,因为我不知道如何从触发器引用父组件
我已尝试在
文本框
或样式触发器上添加控制模板
触发器
。我试图通过名称或使用TemplateBinding
选项来引用组合框,但没有任何运气。请举一个简单的例子。将IsKeyboardFocusWithin绑定到IsDropDownOpen
<ComboBox ItemsSource="{Binding SortedItems}"
StaysOpenOnEdit="True"
IsDropDownOpen="{Binding IsKeyboardFocusWithin, RelativeSource={RelativeSource Self}, Mode=OneWay}" />
将combobox的边框笔刷设置在其Gotfocus
中,并使其在失去焦点时透明:
private void comboBox_GotFocus(object sender, RoutedEventArgs e)
{
Thickness th = new Thickness(2);
comboBox.BorderThickness = th;
comboBox.BorderBrush = this.FindResource("TabFocusColor") as SolidColorBrush;
or
comboBox.BorderBrush = Brushes.Green;
}
private void comboBox_LostFocus(object sender, RoutedEventArgs e)
{
comboBox.BorderBrush = Brushes.Transparent;
}
@西德尼扬德鲁斯太棒了!当我尝试过的所有其他方法都失败时,这种方法就奏效了。谢谢
private void comboBox_GotFocus(object sender, RoutedEventArgs e)
{
Thickness th = new Thickness(2);
comboBox.BorderThickness = th;
comboBox.BorderBrush = this.FindResource("TabFocusColor") as SolidColorBrush;
or
comboBox.BorderBrush = Brushes.Green;
}
private void comboBox_LostFocus(object sender, RoutedEventArgs e)
{
comboBox.BorderBrush = Brushes.Transparent;
}