2011-09-29 331 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>