ボタンをクリックした後、ボタンを無効にしたい。見たいけど、一度クリックしたら二度とクリックしたくない。Windows Phone 8 でこれを行うにはどうすればよいですか?
button1.isEnabled = false; //hide button.
非表示にしてもう一度クリックしたくありません。
ボタンをクリックした後、ボタンを無効にしたい。見たいけど、一度クリックしたら二度とクリックしたくない。Windows Phone 8 でこれを行うにはどうすればよいですか?
button1.isEnabled = false; //hide button.
非表示にしてもう一度クリックしたくありません。
UIElement.IsHitTestVisible Property
この要素がヒット テストとして返される可能性があるかどうかを宣言する値を取得または設定します
your_btn.IsHitTestVisible = False
関数の最初に設定しTrue
、最後にリセットすることができます
また
UIElement.IsEnabled Property
この要素がユーザー インターフェイス (UI) で有効になっているかどうかを示す値を取得または設定します
IsEnabled (背景を透明に設定) を使用して、スタイル リソースを作成できます (XAML にright click on the view of your_btn->edit template->edit a copy...
移動し、VisualState x:Name="Disabled"
フィールド設定を変更しStoryboard.TargetProperty="Background" Value="your_background"
ます。この方法で、保持ボタンをシミュレートすることもできます... リソース スタイルは
<Style x:Key="ButtonStyle1" TargetType="Button">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderBrush" Value="{StaticResource PhoneForegroundBrush}"/>
<Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}"/>
<Setter Property="BorderThickness" Value="{StaticResource PhoneBorderThickness}"/>
<Setter Property="FontFamily" Value="{StaticResource PhoneFontFamilySemiBold}"/>
<Setter Property="FontSize" Value="{StaticResource PhoneFontSizeMedium}"/>
<Setter Property="Padding" Value="10,5,10,6"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid Background="Transparent">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal"/>
<VisualState x:Name="MouseOver"/>
<VisualState x:Name="Pressed">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentContainer">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneButtonBasePressedForegroundBrush}"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="ButtonBackground">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneAccentBrush}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Disabled">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentContainer">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneDisabledBrush}"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="ButtonBackground">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneDisabledBrush}"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="ButtonBackground">
<DiscreteObjectKeyFrame KeyTime="0" Value="Transparent"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Border x:Name="ButtonBackground" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="0" Margin="{StaticResource PhoneTouchTargetOverhang}">
<ContentControl x:Name="ContentContainer" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Foreground="{TemplateBinding Foreground}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" Padding="{TemplateBinding Padding}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
そして、あなたのボタンにはStyle="{StaticResource ButtonStyle1}"
プロパティがあります
Click Event にそのような行を入れようとしましたか?
myButton.IsHitTestVisible = false;
これを試して -
private void button1_Click(object sender, RoutedEventArgs e)
{
button1.Click -= button1_Click;
//Then do what the button does.
}
したがって、最初のクリックの後、イベント ハンドラーは Click Event からサブスクライブを解除します。そのため、それ以上クリックしてもイベント ハンドラーは呼び出されません。