2014-01-08 31 views
0

当将FlowDirection应用为RightToLeft时,为什么在Windows 8.1中出现带镜像的复选框选中标记。它通常在其他的Windows操作系统。Windows 8.1中RightToLeft流向的复选框

<CheckBox HorizontalAlignment="Center" VerticalAlignment="Center" IsChecked="True" 
FlowDirection="RightToLeft"> 

回答

0

如果您希望在其他操作系统中使用此功能,请按照从左到右的顺序编辑模板和硬代码。

+0

我期待的是在Windows8.1中的这种行为? –

+1

是的,这是行为8.1 – Sankarann

+0

这似乎不是行为可以请参考微软网站 –

1

我发现了另一个搜索这个答案..

你可以自己的风格设置的复选框:

<Window x:Class="WpfApplication21.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Window.Resources> 
     <Style x:Key="CheckBoxStyle1" TargetType="{x:Type CheckBox}"> 
      <Setter Property="FocusVisualStyle"> 
       <Setter.Value> 
        <Style> 
         <Setter Property="Control.Template"> 
          <Setter.Value> 
           <ControlTemplate> 
            <Rectangle Margin="2" SnapsToDevicePixels="True" Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" StrokeThickness="1" StrokeDashArray="1 2"/> 
           </ControlTemplate> 
          </Setter.Value> 
         </Setter> 
        </Style> 
       </Setter.Value> 
      </Setter> 
      <Setter Property="Background" Value="White"/> 
      <Setter Property="BorderBrush" Value="#FF707070"/> 
      <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/> 
      <Setter Property="BorderThickness" Value="1"/> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type CheckBox}"> 
         <Grid x:Name="templateRoot" Background="Transparent" SnapsToDevicePixels="True"> 
          <Grid.ColumnDefinitions> 
           <ColumnDefinition Width="Auto"/> 
           <ColumnDefinition Width="*"/> 
          </Grid.ColumnDefinitions> 
          <Border x:Name="checkBoxBorder" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="1" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"> 
           <Grid x:Name="markGrid"> 
            <Path FlowDirection="LeftToRight" x:Name="optionMark" Data="F1M9.97498,1.22334L4.6983,9.09834 4.52164,9.09834 0,5.19331 1.27664,3.52165 4.255,6.08833 8.33331,1.52588E-05 9.97498,1.22334z" Fill="#FF212121" Margin="1" Opacity="0" Stretch="None"/> 
            <Rectangle x:Name="indeterminateMark" Fill="#FF212121" Margin="2" Opacity="0"/> 
           </Grid> 
          </Border> 
          <ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Grid.Column="1" ContentStringFormat="{TemplateBinding ContentStringFormat}" Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 
         </Grid> 
         <ControlTemplate.Triggers> 
          <Trigger Property="HasContent" Value="True"> 
           <Setter Property="FocusVisualStyle"> 
            <Setter.Value> 
             <Style> 
              <Setter Property="Control.Template"> 
               <Setter.Value> 
                <ControlTemplate> 
                 <Rectangle Margin="14,0,0,0" SnapsToDevicePixels="True" Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" StrokeThickness="1" StrokeDashArray="1 2"/> 
                </ControlTemplate> 
               </Setter.Value> 
              </Setter> 
             </Style> 
            </Setter.Value> 
           </Setter> 
           <Setter Property="Padding" Value="4,-1,0,0"/> 
          </Trigger> 
          <Trigger Property="IsMouseOver" Value="True"> 
           <Setter Property="Background" TargetName="checkBoxBorder" Value="#FFF3F9FF"/> 
           <Setter Property="BorderBrush" TargetName="checkBoxBorder" Value="#FF5593FF"/> 
           <Setter Property="Fill" TargetName="optionMark" Value="#FF212121"/> 
           <Setter Property="Fill" TargetName="indeterminateMark" Value="#FF212121"/> 
          </Trigger> 
          <Trigger Property="IsEnabled" Value="False"> 
           <Setter Property="Background" TargetName="checkBoxBorder" Value="#FFE6E6E6"/> 
           <Setter Property="BorderBrush" TargetName="checkBoxBorder" Value="#FFBCBCBC"/> 
           <Setter Property="Fill" TargetName="optionMark" Value="#FF707070"/> 
           <Setter Property="Fill" TargetName="indeterminateMark" Value="#FF707070"/> 
          </Trigger> 
          <Trigger Property="IsPressed" Value="True"> 
           <Setter Property="Background" TargetName="checkBoxBorder" Value="#FFD9ECFF"/> 
           <Setter Property="BorderBrush" TargetName="checkBoxBorder" Value="#FF3C77DD"/> 
           <Setter Property="Fill" TargetName="optionMark" Value="#FF212121"/> 
           <Setter Property="Fill" TargetName="indeterminateMark" Value="#FF212121"/> 
          </Trigger> 
          <Trigger Property="IsChecked" Value="True"> 
           <Setter Property="Opacity" TargetName="optionMark" Value="1"/> 
           <Setter Property="Opacity" TargetName="indeterminateMark" Value="0"/> 
          </Trigger> 
          <Trigger Property="IsChecked" Value="{x:Null}"> 
           <Setter Property="Opacity" TargetName="optionMark" Value="0"/> 
           <Setter Property="Opacity" TargetName="indeterminateMark" Value="1"/> 
          </Trigger> 
         </ControlTemplate.Triggers> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </Window.Resources> 
    <Grid> 
     <CheckBox HorizontalAlignment="Center" VerticalAlignment="Center" IsChecked="True" 
FlowDirection="RightToLeft" Content="CheckBox" Style="{DynamicResource CheckBoxStyle1}"/> 
    </Grid> 
</Window> 

虽然看上去会略有不同,但你可以用它或变更手续风格也是如此。

+0

谢谢!为解决方法 –