WPF-控件的使用-按钮
WPF-控件的使用-按钮
简介
按钮这个控件的作用就是点击触发相应的事件,继承自ButtonBase类,按照官方的说法就是Button控件对来自鼠标、键盘、触笔或其他输入设备的用户输入做出反应并引发 Click事件。经常使用的就是button 和 radiobutton这两个控件;button的事件有很多,光是点击这个事件就有Hover,Press,Release三种不同的方式响应单击.默认为Release,按下并释放按钮之前。
button
但生产场景中是不会有太多要求的,基本用默认的Click时间。
事件
在传统的开发中,只要声明Click事件,在事件中处理方法。如果一个页面中有太多的Click事件,Click事件会造成开发和修改上的麻烦,这时可以使用Tag和Uid等属性来对其进行标识,同时这些属性也可以用来存储一些值。
<Grid Grid.Row="0" Grid.Column="0">
<StackPanel Height="80" Orientation="Horizontal">
<Button Click="Button_Click" Tag="1" Content="增加"/>
<Button Click="Button_Click" Tag="2" Content="删除"/>
<Button Click="Button_Click" Tag="3" Content="修改"/>
<Button Click="Button_Click" Tag="4" Content="查询"/>
<Label x:Name="label_btn" Background="White" Width="100"/>
</StackPanel>
</Grid>
private void Button_Click(object sender, RoutedEventArgs e)
{
this.Cursor = Cursors.Wait;
try
{
if (e.OriginalSource.GetType() == new Button().GetType())
{
Button bt = e.OriginalSource as Button;
// 增加
if (bt.Tag.ToString() == "1")
{
this.label_btn.Content = "增加";
}
// 删除
if (bt.Tag.ToString() == "2")
{
this.label_btn.Content = "删除";
}
// 修改
if (bt.Tag.ToString() == "3")
{
this.label_btn.Content = "修改";
}
// 查询
if (bt.Tag.ToString() == "4")
{
this.label_btn.Content = "查询";
}
}
}
catch (Exception ex)
{
}
finally
{
this.Cursor = Cursors.Arrow;
}
}
样式
button基本的样式就是将图片加入其中或者将传统的button样式改为网页的超链接的样式,放入到列表中
<Grid Grid.Row="0" Grid.Column="1" >
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Button Grid.Column="0" Height="80" Width="100">
<StackPanel Orientation="Horizontal">
<Image Grid.Column="0" Source="./Images/7a47f86d4f2aa7e9.jpg" Height="50" Width="50" />
<Label Content="操作"/>
</StackPanel>
</Button>
<Button Grid.Column="1" Style="{StaticResource MyButton}" Content="操作" Height="50" Width="50"/>
</Grid>
MVVM模式中
用法没有多大改变,绑定命令,使用CommandParameter传递参数
<Grid Grid.Row="1" Grid.Column="0">
<Button Click="{Binding ClikckCommand}" CommandParameter="{Binding xxx}"/>
</Grid>
radioButton
单选按钮,并没有什么特别之处,用的不多,只需通过设置组名来限制单选的范围,但如果单选的场景,可以使用combobox来替代。
<Grid Grid.Row="1" Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Orientation="Vertical">
<RadioButton Content="1" GroupName="First"/>
<RadioButton Content="2" GroupName="First"/>
<RadioButton Content="3" GroupName="First"/>
</StackPanel>
<StackPanel Grid.Column="1" Orientation="Vertical">
<RadioButton Content="3" GroupName="Second"/>
<RadioButton Content="4" GroupName="Second"/>
<RadioButton Content="5" GroupName="Second"/>
</StackPanel>
</Grid>
MVVM模式中
基本上是绑定一个基础类,随后绑定其主要属性,或者和多选框一样,循环一个列表,多个控件。
<StackPanel Grid.Column="2" Orientation="Vertical">
<RadioButton Content="{Binding Content}" GroupName="{Binding GroupName}" IsChecked="{Binding IsChecked}"/>
</StackPanel>
public class RadioBtnBaseClass
{
public string ID { get; set; }
public string Content { get; set; }
public string GroupName { get; set; }
public string IsChecked { get; set; } = "False";
}