2011-09-29 11 views
23

Estoy creando un cuadro de diálogo WPF. Es como nuestro messagebox normal con los botones ok y cancel. ¿Cómo crear un cuadro de diálogo para que el botón Ok se seleccione cuando se abre el cuadro de diálogo?¿Cómo seleccionar el botón predeterminado en el cuadro de diálogo wpf?

+3

establecer el IsDefault = True para el botón Aceptar –

+0

Es sólo permite ahorrar en el botón Enter, pero no demuestra el botón se selecciona – Abhishek

Respuesta

48

Para establecer una ventana de botón predeterminado

Ajuste del botón predeterminado IsDefault property true.

Tenga en cuenta que también puede establecer el botón Cancelar de una ventana configurando el botón IsCancel property en verdadero.


Para configurar el botón seleccionado (centrado) en una ventana

Si desea seleccionar un botón en particular, entonces utilizar el método de enfoque de esta manera:

yourButton.Focus(); 

que podría hacer esto cuando se carga una ventana (en el evento Window_Loaded).

Para seleccionar un botón en particular cuando se abre la ventana, asegúrese de que su IsTabStop property esté configurado en verdadero y asegúrese de que TabIndex property sea menor que cualquier otro control en la ventana.

+0

Thnx por la ayuda, pero es no funciona. .no muestra que el botón está seleccionado, solo permite ingresar el botón ¿alguna alternativa? – Abhishek

+1

@iamabhiee Editado para establecer el foco en un botón. HTH. –

+0

.Focus() Trabajó muy bien para mí, gracias :) – Abhishek

1

simplemente cree una nueva plantilla de botón y cambie la apariencia para el estado IsDefault = Tue. Acabo de crear un estilo y he modificado el estado.

<Window 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:System="clr-namespace:System;assembly=mscorlib" 
xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero" 
x:Class="WpfApplication7.Window3" 
x:Name="Window" 
Title="Window3" 
Width="640" Height="480" FocusManager.FocusedElement="{Binding ElementName=test}"> 

<Window.Resources> 
    <Style x:Key="ButtonFocusVisual"> 
     <Setter Property="Control.Template"> 
      <Setter.Value> 
       <ControlTemplate> 
        <Rectangle Margin="2" 
        Stroke="red" StrokeThickness="1" 
        SnapsToDevicePixels="true" StrokeDashArray="1 2"/> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

    <Style x:Key="ButtonStyle1" TargetType="{x:Type Button}"> 
     <Setter Property="FocusVisualStyle" Value="{StaticResource ButtonFocusVisual}"/> 
     <Setter Property="HorizontalContentAlignment" Value="Center"/> 
     <Setter Property="VerticalContentAlignment" Value="Center"/> 
     <Setter Property="Padding" Value="1"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type Button}"> 
        <Border x:Name="border" BorderThickness="1" BorderBrush="#FF040000" CornerRadius="5"> 
         <Border.Background> 
          <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
           <GradientStop Color="#FF7A7A7A" Offset="0"/> 
           <GradientStop Color="#FFE7E7E7" Offset="1"/> 
          </LinearGradientBrush> 
         </Border.Background> 
         <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 
        </Border> 
        <ControlTemplate.Triggers> 
                <Trigger Property="IsDefault" Value="True"> 
          <Setter Property="Background" TargetName="border"> 
           <Setter.Value> 
            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
             <GradientStop Color="#FFA76F6F" Offset="0"/> 
             <GradientStop Color="#FFE7E7E7" Offset="1"/> 
            </LinearGradientBrush> 
           </Setter.Value> 
          </Setter> 
         </Trigger> 
         <MultiTrigger> 
          <MultiTrigger.Conditions> 
           <Condition Property="IsFocused" Value="True"/> 
           <Condition Property="IsDefault" Value="True"/> 
          </MultiTrigger.Conditions> 
          <Setter Property="Background" TargetName="border"> 
           <Setter.Value> 
            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
             <GradientStop Color="#FFC2BE5B" Offset="0.007"/> 
             <GradientStop Color="#FFE7E7E7" Offset="1"/> 
            </LinearGradientBrush> 
           </Setter.Value> 
          </Setter> 
         </MultiTrigger> 
         <Trigger Property="IsPressed" Value="True"> 
          <Setter Property="BorderBrush" TargetName="border" Value="#FF01641D"/> 
          <Setter Property="BorderThickness" TargetName="border" Value="2"/> 
          <Setter Property="Background" TargetName="border"> 
           <Setter.Value> 
            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
             <GradientStop Color="#FF528159" Offset="0"/> 
             <GradientStop Color="#FFE7E7E7" Offset="1"/> 
            </LinearGradientBrush> 
           </Setter.Value> 
          </Setter> 
         </Trigger> 

        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</Window.Resources> 

<Grid x:Name="LayoutRoot"> 
    <Button x:Name="test" Content="Button" HorizontalAlignment="Left" Height="26" Margin="130,157,0,0" VerticalAlignment="Top" Width="164" Style="{DynamicResource ButtonStyle1}" IsDefault="True"/> 
    <Button Content="Button" Height="26" Margin="298,157,162,0" VerticalAlignment="Top" Style="{DynamicResource ButtonStyle1}"/> 
    <Button Content="Button" HorizontalAlignment="Right" Height="26" Margin="0,157,-6,0" VerticalAlignment="Top" Width="164" Style="{DynamicResource ButtonStyle1}"/> 
</Grid> 

Cuestiones relacionadas