-
May 7th, 2009, 06:29 PM
#1
hiding a button on click
I am trying to hide the button once it has been clicked. Each button has its own UID within a datagrid. Is there a way to set or pass a parameter that will hide that particular button?
-
May 9th, 2009, 02:27 PM
#2
Re: hiding a button on click
You don't need to pass your own parameter for that - in the Click event handler you assign to the buttons, you can evaluate either the 'sender' parameter, or the event arguments' 'Source' property for that:
Code:
private void Button_Click(object sender, RoutedEventArgs e)
{
Button source = e.Source as Button;
if (source != null)
{
source.Visibility = Visibility.Hidden;
}
}
-
May 15th, 2009, 02:59 AM
#3
Re: hiding a button on click
Another approach is the use a custom style for a ToggleButton.
Code:
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Window.Resources>
<Style x:Key="HideButtonStyle" TargetType="{x:Type ToggleButton}">
<Setter Property="Foreground" Value="#FFFFFF" />
<Setter Property="Width" Value="60"/>
<Setter Property="Height" Value="20"/>
<Setter Property="FontSize" Value="10"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Grid>
<Rectangle x:Name="Rectangle" Stroke="#FF051F42" StrokeMiterLimit="1.000000" StrokeThickness="0.500000" RadiusX="5" RadiusY="5">
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.501,0.039" StartPoint="0.501,0.971">
<GradientStop Color="#FF1F317D" Offset="0.101"/>
<GradientStop Color="#FF1F317D" Offset="0.49"/>
<GradientStop Color="#FF6C8EBD" Offset="0.51"/>
<GradientStop Color="#FF283D8C" Offset="0"/>
<GradientStop Color="#FF7094C7" Offset="0.986"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" RecognizesAccessKey="True"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsKeyboardFocused" Value="true"/>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Fill" TargetName="Rectangle">
<Setter.Value>
<LinearGradientBrush EndPoint="0.501,0.039" StartPoint="0.501,0.971">
<GradientStop Color="#FF2C558C" Offset="0.101"/>
<GradientStop Color="#FF1F317D" Offset="0.49"/>
<GradientStop Color="#FF9DB5D7" Offset="0.51"/>
<GradientStop Color="#FF244AAF" Offset="0"/>
<GradientStop Color="#FF87A4D9" Offset="0.986"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsChecked" Value="true" >
<Setter Property="Visibility" Value="Hidden" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid>
<ToggleButton Width="80" Height="18" Margin="10,0,0,0" Style="{DynamicResource HideButtonStyle}" >_Hide Me</ToggleButton>
</Grid>
</Window>
The code that actually hides the button is the following trigger:
Code:
<Trigger Property="IsChecked" Value="true" >
<Setter Property="Visibility" Value="Hidden" />
</Trigger>
-
May 15th, 2009, 01:15 PM
#4
Re: hiding a button on click
Yes, I ended implementing the following.
Code:
<Style TargetType="{x:Type Button}" x:Key="CellTextStyle">
<Setter Property="IsEnabled" Value="true" />
<Setter Property="IsTabStop" Value="false" />
<Style.Triggers>
<Trigger Property="Tag" Value="Closed">
<Setter Property = "Visibility" Value="Hidden"/>
</Trigger>
</Style.Triggers>
</Style>
Last edited by gstercken; May 15th, 2009 at 02:11 PM.
Reason: Added code tags - again...
-
May 15th, 2009, 02:14 PM
#5
Re: hiding a button on click
@Arjay: Cool! As it is good practice with WPF, a declarative / XAML-only approach is always to be considered better than any solution involving code-behind...
@neo_xaml: Please use code tags when posting code. I'm getting tired of editing posts for that...
Last edited by gstercken; May 15th, 2009 at 02:20 PM.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|