2:条目控件(Items Controls)
3:文本控件(Text Controls)
4:范围控件(Range Controls)
一、内容控件
内容控件的最大的特征就是有一个<font style="color:rgb(0, 0, 0);">Content</font>
属性,从前面的文章中,我们多多少少也知道<font style="color:rgb(0, 0, 0);">Content</font>
接收的是一个<font style="color:rgb(0, 0, 0);">Object</font>
类型,或许我们会立即想到莫非<font style="color:rgb(0, 0, 0);">Button</font>
就是一个内容控件,确实,<font style="color:rgb(0, 0, 0);">Button</font>
算是一个内容控件,凡是内容控件都继承自<font style="color:rgb(0, 0, 0);">ContentControl</font>
,因为<font style="color:rgb(0, 0, 0);">Content</font>
属性就是属于<font style="color:rgb(0, 0, 0);">ContentControl</font>
。<1>Button
<2>RepeatButton
一般用来实现“快进”,“快退”
Delay:作用就是按下时第一次触发
<font style="color:rgb(0, 0, 0);">Click</font>
的时间延迟。Interval:每次click发生的时间间隔。
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:WpfApplication1"
Title="MainWindow" Height="350" Width="525">
<Canvas>
<TextBox Canvas.Left="151" Canvas.Top="69" Height="33" Name="textBox1" Width="172" Text="0" />
<RepeatButton x:Name="test" Delay="100" Interval="100" Click="test_Click" Width="172"
Content="确定" Height="61" Canvas.Left="151" Canvas.Top="121" />
</Canvas>
</Window>
namespace WpfApplication1
{
/// <summary>
/// Window1.xaml 的交互逻辑
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void test_Click(object sender, RoutedEventArgs e)
{
var num = Convert.ToInt32(textBox1.Text);
textBox1.Text = (++num).ToString();
}
}
}
从图中我们看到
<3>ToggleButton
<font style="color:rgb(0, 0, 0);">ToggleButton</font>
是<font style="color:rgb(0, 0, 0);">CheckBox</font>
和<font style="color:rgb(0, 0, 0);">RadioButton</font>
的基类。
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:WpfApplication1"
Title="MainWindow" Height="350" Width="525">
<Grid>
<CheckBox Content="CheckBox" Height="16" HorizontalAlignment="Left" Margin="96,137,0,0" Name="checkBox1"
VerticalAlignment="Top" IsThreeState="True" Indeterminate="checkBox1_Checked" />
</Grid>
</Window>
namespace WpfApplication1
{
/// <summary>
/// Window1.xaml 的交互逻辑
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void checkBox1_Checked(object sender, RoutedEventArgs e)
{
MessageBox.Show("不错");
}
}
}
二、条目控件
条目控件首先都是继承自<font style="color:rgb(0, 0, 0);">ItemsControl</font>
,在<font style="color:rgb(0, 0, 0);">ItemsControl</font>
中我们发现有两个比较有意思的属性,<font style="color:rgb(0, 0, 0);">Items</font>
和<font style="color:rgb(0, 0, 0);">ItemsSource</font>
。Items:
从图中可以看出
<font style="color:rgb(0, 0, 0);">Items</font>
属于<font style="color:rgb(0, 0, 0);">ItemCollection</font>
的集合类型,所以每一个Item里面都可以放入一个<font style="color:rgb(0, 0, 0);">Object</font>
类型对象,这里有意思的地方就是,如果我放入的是一个UI元素,那么很好,wpf会调用UI的<font style="color:rgb(0, 0, 0);">OnRender</font>
方法将UI元素呈现,如果说是一个没有<font style="color:rgb(0, 0, 0);">OnRender</font>
方法的元素,那该怎么办呢?WPF很智能,它会创建一个<font style="color:rgb(0, 0, 0);">TextBlock</font>
,然后调用该对象的<font style="color:rgb(0, 0, 0);">ToString()</font>
将字符串呈现在<font style="color:rgb(0, 0, 0);">TextBlock</font>
上。ItemsSource:
从前面文章中我们也看到,ItemsSource常用于数据绑定,所以是一个非常实用的属性。 <1>Expander
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:WpfApplication1"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Expander Header="年龄组" Height="208" Margin="39,33,154,70" Name="expander1" Width="310">
<StackPanel>
<RadioButton Content="RadioButton1" Height="16" Name="radioButton1" />
<RadioButton Content="RadioButton2" Height="16" Name="radioButton2" />
</StackPanel>
</Expander>
</Grid>
</Window>
<2>GroupBox
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:WpfApplication1"
Title="MainWindow" Height="350" Width="525">
<Grid>
<GroupBox Header="年龄组" Height="208" Margin="39,33,154,70" Name="expander1" Width="310">
<StackPanel>
<RadioButton Content="RadioButton1" Height="16" Name="radioButton1" />
<RadioButton Content="RadioButton2" Height="16" Name="radioButton2" />
</StackPanel>
</GroupBox>
</Grid>
</Window>
<3>TabItem
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:WpfApplication1"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TabControl TabStripPlacement="Top" SelectedIndex="2">
<TabItem Header="TabItem1">
<TextBlock>111111</TextBlock>
</TabItem>
<TabItem Header="TabItem2">
<TextBlock>222222222</TextBlock>
</TabItem>
<TabItem Header="TabItem3">
<TextBlock>33333333</TextBlock>
</TabItem>
<TabItem Header="TabItem4">
<TextBlock>444444444</TextBlock>
</TabItem>
</TabControl>
</Grid>
</Window>
三、文本控件
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:WpfApplication1"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="130,103,0,0" Name="button1" VerticalAlignment="Top" Width="75"
ToolTipService.HorizontalOffset="20"
ToolTipService.VerticalOffset="20" >
<Button.ToolTip>
<StackPanel>
<GroupBox Header="XXX选择题,你懂得...">
<GroupBox.Content>
<StackPanel>
<TextBlock x:Name="A">A:XXXX</TextBlock>
<TextBlock x:Name="B">B:XX</TextBlock>
<TextBlock x:Name="C">C:OOOO</TextBlock>
<TextBlock x:Name="D">D:OO</TextBlock>
</StackPanel>
</GroupBox.Content>
</GroupBox>
</StackPanel>
</Button.ToolTip>
</Button>
</Grid>
</Window>
四、范围控件
<1>ScrollViewer
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:WpfApplication1"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ScrollViewer Height="108" HorizontalAlignment="Left" Margin="98,63,0,0"
Name="scrollViewer1" VerticalAlignment="Top" Width="224"
VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
<StackPanel x:Name="Test" Orientation="Horizontal">
</StackPanel>
</ScrollViewer>
</Grid>
</Window>
namespace WpfApplication1
{
/// <summary>
/// Window1.xaml 的交互逻辑
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
for (int i = 0; i < 100; i++)
{
TextBox tbx = new TextBox();
tbx.Text = i.ToString();
Test.Children.Add(tbx);
}
}
}
}
<2>ScrollBar
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:WpfApplication1"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid>
<StackPanel Height="100" Margin="97,61,206,150" Name="stackPanel1" Width="200">
<ScrollBar Name="test" Orientation="Horizontal" Maximum="100" Minimum="5" SmallChange="2" Height="17" Width="186" />
<Label Content="滑动块值"/>
<TextBox Name="txtScrollValue" Text="{Binding ElementName=test, Path=Value}"/>
</StackPanel>
</Grid>
</Grid>
</Window>
<3>ProgressBar
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:WpfApplication1"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ProgressBar Height="20" Margin="40" Name="ProgressBar1" IsIndeterminate="True"></ProgressBar>
</Grid>
</Window>