0
在我的應用程序中,我想要一個CheckBox
如果它的Keyboardfocus不應該有一個虛線邊框。 Therfor我已將FocusVisualStyle
設置爲空。該CheckBox
的定義是這樣的:FocuVisualStyle風格不適用
<CheckBox Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Margin="0,5,0,10" Style="{StaticResource MyCheckBoxStyle}"
IsChecked="{Binding UseOriginalPath, UpdateSourceTrigger=PropertyChanged}" FocusVisualStyle="{x:Null}" >
<TextBlock TextWrapping="Wrap" Text="Use the original path"/>
</CheckBox>
我對CheckBox
自定義樣式看起來像:
<Style TargetType="CheckBox" x:Key="MyCheckBoxStyle">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<Grid Margin="2.5">
<Border BorderThickness="0" BorderBrush="Green" Margin="-25,-2.5,-6,-2.5" x:Name="border"/>
<ContentPresenter Content="{TemplateBinding Content}"/>
</Grid>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=CheckBox}, Path=IsFocused}" Value="True">
<Setter TargetName="border" Property="BorderThickness" Value="1.5"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
直到這裏的一切只是按預期工作。如果我將CheckBox
與Tab-Key對齊,則它周圍沒有虛線邊框。
但是,如果我從CheckBox
定義中刪除FocusVisualStyle="{x:Null}"
並且想將其移動到syle,它將無法工作。
所以CheckBox
的定義現在的樣子:
<CheckBox Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Margin="0,5,0,10" Style="{StaticResource MyCheckBoxStyle}"
IsChecked="{Binding UseOriginalPath, UpdateSourceTrigger=PropertyChanged}">
<TextBlock TextWrapping="Wrap" Text="Use the original path"/>
</CheckBox>
而且款式樣子:
<Style TargetType="CheckBox" x:Key="MyCheckBoxStyle">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<Grid Margin="2.5">
<Border BorderThickness="0" BorderBrush="#79B100" Margin="-25,-2.5,-6,-2.5" x:Name="border"/>
<ContentPresenter Content="{TemplateBinding Content}"/>
</Grid>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=CheckBox}, Path=IsFocused}" Value="True">
<Setter TargetName="border" Property="BorderThickness" Value="1.5"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</Setter.Value>
</Setter>
<Setter Property="FocusVisualStyle" Value="{x:Null}"/>
</Style>
現在,如果我專注於CheckBox
用TAB鍵也有在dottet邊界。我不明白我在這裏做錯了什麼?
謝謝。我已經通過編寫一個'UserControl'解決了這個問題,該''UserControl'繼承自'CheckBox'並將'FocusVisualStyle'設置爲null。這對我有用 – Tomtom