2011-09-29 335 views
23

我正在创建一个WPF对话框。它就像我们的正常messageboxokcancel按钮。如何创建这样的对话框,以便在打开对话框时选择Ok按钮?如何在wpf对话框中选择默认按钮?

+3

设置ISDEFAULT = True以确定按钮 –

+0

它只允许节省输入按钮,但没有显示按钮被选中 – Abhishek

回答

48

要设置窗口的默认按钮

设置默认按钮的IsDefault property为true。

请注意,您也可以通过将按钮的IsCancel property设置为true来设置窗口的取消按钮。


要设置一个窗口

选择的(聚焦)按钮,如果你想选择一个特定的按钮,然后使用Focus方法是这样的:

yourButton.Focus(); 

你可能会做这是在窗口加载时(在Window_Loaded事件中)。

要在窗口打开时选择一个特定按钮,请确保它的IsTabStop property设置为true,并确保其TabIndex property低于Window上的任何其他控件。

+0

日Thnx的帮助,但不工作。 。它不显示该按钮被选中它只能启用输入按钮 任何替代品?? – Abhishek

+1

@iamabhiee编辑设置按钮上的焦点。 HTH。 –

+0

.Focus()工作很好对我感谢:) – Abhishek

1

只需创建一个新的按钮模板并更改IsDefault = Tue状态的外观。 我刚创建了一个样式并修改了状态。

<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>