Wpf - Bouton par Défaut ne fonctionne pas comme Prévu
Je vais avoir un problème avec la valeur par défaut Button
dans le code xaml ci-dessous:
<Window x:Class="WebSiteMon.Results.Views.GraphicSizeSelectPopUp"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:commonWPF="http://rubenhak.com/common/wpf"
xmlns:WPF="clr-namespace:Bennedik.Validation.Integration.WPF;assembly=Bennedik.Validation.Integration.WPF"
ResizeMode="NoResize"
WindowStyle="ThreeDBorderWindow"
SizeToContent="WidthAndHeight">
<Window.Resources>
<Style TargetType="{x:Type TextBox}">
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<Border BorderBrush="Red"
BorderThickness="2">
<AdornedElementPlaceholder />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="Validation.HasError"
Value="true">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}" />
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<WPF:ErrorProvider x:Name="UrlDataErrorProvider"
RulesetName="RuleSetA">
<Grid Background="{DynamicResource WindowBackgroundBrush}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="25" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<RadioButton Grid.ColumnSpan="2"
Margin="10"
Name="radioButton1"
Content="640 x 480 pixels"
Command="{Binding SelectSizeRb}"
CommandParameter="640,480" />
<RadioButton Grid.ColumnSpan="2"
Margin="10"
Name="radioButton2"
Content="800 x 600 pixels"
Command="{Binding SelectSizeRb}"
CommandParameter="800,600"
Grid.Row="1"
IsChecked="True" />
<RadioButton Grid.ColumnSpan="2"
Margin="10"
Name="radioButton3"
Content="1024 x 768 pixels"
Command="{Binding SelectSizeRb}"
CommandParameter="1024,768"
Grid.Row="2" />
<RadioButton Grid.ColumnSpan="2"
Margin="10"
Name="radioButton4"
Command="{Binding SelectSizeRb}"
CommandParameter="0,0"
Grid.Row="3" />
<Button Grid.Column="1"
Grid.ColumnSpan="1"
Grid.Row="5"
Margin="5"
Name="BtnOk"
IsDefault="True">Ok</Button>
<Button Grid.Column="2"
Grid.ColumnSpan="1"
Grid.Row="5"
Margin="5"
Name="BtnCancel"
IsCancel="True">Cancel</Button>
</Grid>
</WPF:ErrorProvider>
</Window>
J'appelle le dessus de la fenêtre en utilisant le code suivant:
var p = new GraphicSizeSelectPopUp();
var result = p.ShowDialog() ?? false;
p.Close();
Je suis en utilisant cela comme une Popup
fenêtre dans ma demande pour obtenir des informations de l'utilisateur. Mon problème est lorsque je clique sur le OK
bouton, rien ne se passe. Le Cancel
bouton fonctionne exactement comme prévu, ce qui signifie que le contrôle retourne au programme appelant de la ShowDialog
méthode.
Que je comprends de WPF (encore débutant), tout ce que j'ai à faire est de définir la IsDefault
propriété sur true pour le bouton par défaut pour faire de même. Cependant, ce n'est pas ce que je vois. Lorsque j'ai mis un point d'arrêt sur la ligne après le ShowDialog
méthode, il n'est pas frappé quand j'appuie sur le bouton ok. Seulement lorsque j'appuie sur le Cancel
bouton ou de fermer la fenêtre.
Suggestions pour le profane?
OriginalL'auteur photo_tom | 2009-12-29
Vous devez vous connecter pour publier un commentaire.
La
IsDefault
propriété signifie seulement que ce bouton est "cliqué" lorsque la touche ENTRÉE est pressée. Il ne veut pas fermer la boîte de dialogue, et de ne pas définir laDialogResult
, vous devez le faire manuellement dans le code-behind :(réglage
DialogResult
ferme la fenêtre)vous avez raison, bien sûr. J'ai supprimé l'appel à Proximité.
OriginalL'auteur Thomas Levesque
Pour rendre les choses plus agréables, vous pouvez utiliser une propriété attachée comme celui-ci:
la propriété attachée peut être défini comme tel:
OriginalL'auteur user2220595