1.
//启用自定义字体
此示例需将Bayern ttf字体放置于工程目录下 "./#Bayern" ,如果为已安装的字体则不需要
<Grid> <Label Name="tst" FontSize="20" FontFamily="./#Bayern" >This is an embedded font</Label> </Grid>
2.
//在button里绘制多边形
<Button Margin="10"> <Grid> <Polygon Points="100,25 125,0 200,25 125,50" Fill="LightSteelBlue" /> <Polygon Points="100,25 75,0 0,25 75,50" Fill="White"/> </Grid> </Button>
3.
//把lable和textbox进行绑定
<StackPanel Margin="5"> <Label Target="{Binding ElementName=txtA}">Choose _A</Label> <TextBox Name="txtA"></TextBox> <Label Target="{Binding ElementName=txtB}">Choose _B</Label> <TextBox Name="txtB"></TextBox> </StackPanel>
4.
//RadioButtonGroup
不指定GroupName 则按父容器划分
<StackPanel> <GroupBox Margin="5"> <StackPanel> <RadioButton>Group 1</RadioButton> <RadioButton>Group 1</RadioButton> <RadioButton>Group 1</RadioButton> <RadioButton Margin="0,10,0,0" GroupName="Group2">Group 2</RadioButton> </StackPanel> </GroupBox> <GroupBox Margin="5"> <StackPanel> <RadioButton>Group 3</RadioButton> <RadioButton>Group 3</RadioButton> <RadioButton>Group 3</RadioButton> <RadioButton Margin="0,10,0,0" GroupName="Group2">Group 2</RadioButton> </StackPanel> </GroupBox> </StackPanel>
5.
//tooltip 工具提示
<StackPanel Margin="5" ToolTip="StackPanel tooltip"> <!--InitialShowDelay="5000" 显示延迟5秒--> <Button ToolTip="This is my tooltip" ToolTipService.InitialShowDelay="5000">I have a tooltip</Button> <!--BetweenShowDelay="5000" 延迟显示5秒后消失--> <Button ToolTipService.InitialShowDelay="0" ToolTipService.BetweenShowDelay="5000"> <!--自定义消息--> <Button.ToolTip> <ToolTip Background="#60AA4030" Foreground="White" HasDropShadow="False" > <StackPanel> <TextBlock Margin="3" >Image and text</TextBlock> <Image Source="happyface.jpg" Stretch="None" /> <TextBlock Margin="3" >Image and text</TextBlock> </StackPanel> </ToolTip> </Button.ToolTip> <Button.Content>I have a fancy tooltip</Button.Content> </Button> <!-- Placement="Bottom" 布局到底部 实际效果为左下角--> <Button ToolTip="This is my tooltip" ToolTipService.Placement="Bottom">Placement test</Button> <!-- 如无设置 则显示现实 父容器的tooltip--> <Button Padding="50">Does Nothing</Button> <TextBox TextWrapping="Wrap" MinLines="2" AutoWordSelection="True"></TextBox> </StackPanel>
6.
//弹出 Popup
<Grid Margin="10"> <TextBlock TextWrapping="Wrap">You can use a Popup to provide a link for a specific <Run TextDecorations="Underline" MouseEnter="run_MouseEnter" >term</Run> of interest.</TextBlock> <Popup Name="popLink" StaysOpen="False" Placement="Mouse" MaxWidth="200" PopupAnimation="Slide" AllowsTransparency = "True"> <Border BorderBrush="Beige" BorderThickness="2" Background="White"> <TextBlock Margin="10" TextWrapping="Wrap" > For more information, see <Hyperlink NavigateUri="http://en.wikipedia.org/wiki/Term" Click="lnk_Click">Wikipedia</Hyperlink> </TextBlock> </Border> </Popup> </Grid>
后台代码
private void run_MouseEnter(object sender, MouseEventArgs e) { popLink.IsOpen = true; } private void lnk_Click(object sender, RoutedEventArgs e) { Process.Start(((Hyperlink)sender).NavigateUri.ToString()); }
7.
//滚动条控制 ScrollViewer
<ScrollViewer Name="scroller"> <Grid Margin="0,10,0,0" Focusable="False"> <Grid.RowDefinitions> . . . </Grid.RowDefinitions> <Grid.ColumnDefinitions> . . . </Grid.ColumnDefinitions> </Grid> </ScrollViewer>
控制代码(c#)
private void LineUp(object sender, RoutedEventArgs e) { scroller.LineUp(); } private void LineDown(object sender, RoutedEventArgs e) { scroller.LineDown(); } private void PageUp(object sender, RoutedEventArgs e) { scroller.PageUp(); } private void PageDown(object sender, RoutedEventArgs e) { scroller.PageDown(); }
8.
//智能滚动
CanContentScroll="True"
<ScrollViewer CanContentScroll="True"> <StackPanel > <Button Height="100">1</Button> <Button Height="100">2</Button> <Button Height="100">3</Button> <Button Height="100">4</Button> </StackPanel> </ScrollViewer>
9.
//自定义TabTitle 图片加文字
<TabControl Margin="5"> <TabItem> <TabItem.Header> <StackPanel> <TextBlock Margin="3" >Image and Text Tab Title</TextBlock> <Image Source="happyface.jpg" Stretch="None" /> </StackPanel> </TabItem.Header> <StackPanel Margin="3"> <CheckBox Margin="3">Setting One</CheckBox> <CheckBox Margin="3">Setting Two</CheckBox> <CheckBox Margin="3">Setting Three</CheckBox> </StackPanel> </TabItem> <TabItem Header="Tab Two"> </TabItem> </TabControl>
10.
//Expander可展开和折叠的控件
http://blog.csdn.net/tcjiaan/article/details/6970200 详细介绍
<StackPanel> <Expander Margin="5" Padding="5" Header="Region One" BorderThickness="1" BorderBrush="Black"> <Button Padding="3">Hidden Button One</Button> </Expander> <Expander Margin="5" Padding="5" Header="Region Two" BorderThickness="1" BorderBrush="Black"> <TextBlock TextWrapping="Wrap"> 这是一段很长的内容。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 </TextBlock> </Expander> <Expander Margin="5" Padding="5" Header="Region Three" IsExpanded="True" BorderThickness="1" BorderBrush="Black"> <Button Padding="3">Hidden Button Two</Button> </Expander> </StackPanel>
11.
//多方向展开
ExpandDirection 取值Left Right Up
<Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"></RowDefinition> <RowDefinition Height="Auto"></RowDefinition> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition></ColumnDefinition> <ColumnDefinition></ColumnDefinition> </Grid.ColumnDefinitions> <Expander Margin="5" Padding="5" Header="Region One" BorderThickness="1" BorderBrush="Black"> <TextBlock TextWrapping="Wrap"> Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nam mi sapien, viverra et, lacinia varius, ullamcorper sed, sapien. </TextBlock> </Expander> <Expander Grid.Column="1" Margin="5" Padding="5" Header="Region Two" ExpandDirection="Right" BorderThickness="1" BorderBrush="Black"> <TextBlock TextWrapping="Wrap"> Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nam mi sapien, viverra et, lacinia varius, ullamcorper sed, sapien. </TextBlock> </Expander> <Expander Grid.Row="1" Margin="5" Padding="5" Header="Region Three" ExpandDirection="Up" BorderThickness="1" BorderBrush="Black"> <TextBlock TextWrapping="Wrap"> Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nam mi sapien, viverra et, lacinia varius, ullamcorper sed, sapien. </TextBlock> </Expander> <Expander Grid.Row="1" Grid.Column="1" Margin="5" Padding="5" Header="Region Three" ExpandDirection="Left" BorderThickness="1" BorderBrush="Black"> <TextBlock TextWrapping="Wrap"> Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nam mi sapien, viverra et, lacinia varius, ullamcorper sed, sapien. </TextBlock> </Expander> </Grid>
11.
为TextBox 添加自定义词典
http://www.cnblogs.com/gnielee/archive/2010/05/04/wpf4-spellcheck.html 详细介绍
<Grid Margin="5"> <TextBox SpellCheck.IsEnabled="True" TextWrapping="Wrap" Text="Now the spell checker recognizes acantholysis and offers the right correction for acantholysi"> <SpellCheck.CustomDictionaries> <sys:Uri>pack://application:,,,/Controls;component/CustomWords.lex</sys:Uri> </SpellCheck.CustomDictionaries> </TextBox> </Grid>
12.
//Slider控件
- 使用户能够通过在刻度尺移动手指光标来改变当前的值。
- 有一个默认的Minimum 属性值0 和一个默认的Maximum
属性值10。
- 定义了Orientation属性(默认是Horizontal)。
- 包含了几个属性,用于调整刻度的位置和频率、ToolTip 的位置和精度(这个ToolTip
是用来显示手指光标移动到了哪个当前值)、决定手指光标是自动贴近刻度值还是平滑地移动到任何值。
- 对于键盘导航来说,Slider 包含了Delay 以及Interval
属性,它们与RepeatButton 的同名属性一致。
- 要启用刻度,可以把TickPlacement 设定为TopLeft、BottomRight
或者Both。包含了Slider 的方向。
- 支持在当前的范围内显示一个更小的范围。
- IsSelctionRangeEnabled
被设置为true,可以把SelectionStart 和SelectionEnd
设置为这个“子范围”(subrange)的期望值。
<Grid> <StackPanel Margin="10"> <TextBlock Margin="0,0,0,5">Normal Slider (Max=100, Val=10)</TextBlock> <Slider Maximum="100" Value="10"></Slider> <TextBlock Margin="0,15,0,5">Slider with Tick Marks (TickFrequency=10, TickPlacement=BottomRight)</TextBlock> <Slider Maximum="100" Value="10" TickFrequency="10" TickPlacement="BottomRight"></Slider> <TextBlock Margin="0,15,0,5">Slider with Irregular Tick Marks (Ticks=0,5,10,15,25,50,100)</TextBlock> <Slider Maximum="100" Value="10" Ticks="0,5,10,15,25,50,100" TickPlacement="BottomRight"></Slider> <TextBlock Margin="0,15,0,5" TextWrapping="Wrap">Slider with a Selection Range (IsSelectionRangeEnabled=True, SelectionStart=25, SelectionEnd=75)</TextBlock> <Slider Maximum="100" Value="10" TickFrequency="10" TickPlacement="BottomRight" IsSelectionRangeEnabled="True" SelectionStart="25" SelectionEnd="75"></Slider> </StackPanel> </Grid>
13.
ProgressBar
- 是当面对长时间运行的操作时,为用户显示一个ProgressBar 可以帮助他们了解具体的进度情况。
- ProgressBar 有一个默认的Minimum 属性0,和一个默认的Maximum 属性100。
- IsIndeterminate —— 当把它设置为true 时,ProgressBar 会显示一段通用的动画(这样,Minimum、Maximum 以及Value 的值不会影响这段动画)。
- Orientation —— 默认为Horizontal,但是也可以被设置为Vertical,可以使进度从下走到上而不是从左走到右。
<StackPanel Margin="5"> <ProgressBar Height="10" IsIndeterminate="True"></ProgressBar> </StackPanel>
14.
日期控件Calendar and DatePicker
<Grid Background="White" Margin="3"> <Grid.ColumnDefinitions> <ColumnDefinition></ColumnDefinition> <ColumnDefinition></ColumnDefinition> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition></RowDefinition> <RowDefinition Height="Auto"></RowDefinition> </Grid.RowDefinitions> <StackPanel> <Calendar Margin="3" SelectionMode="MultipleRange" SelectedDatesChanged="Calendar_SelectedDatesChanged" ></Calendar> <Calendar Margin="3" DisplayMode="Year" SelectedDatesChanged="Calendar_SelectedDatesChanged" ></Calendar> </StackPanel> <StackPanel Grid.Column="1"> <DatePicker Margin="3" DateValidationError="DatePicker_DateValidationError" ></DatePicker> <DatePicker Margin="3" SelectedDateFormat="Long" DateValidationError="DatePicker_DateValidationError" ></DatePicker> </StackPanel> <TextBlock Grid.Row="1" Grid.ColumnSpan="2" x:Name="lblError" Foreground="Red" TextWrapping="Wrap"></TextBlock> </Grid>
c#代码
private void DatePicker_DateValidationError(object sender, DatePickerDateValidationErrorEventArgs e) { lblError.Text = "'" + e.Text + "' is not a valid value because " + e.Exception.Message; } private void Calendar_SelectedDatesChanged(object sender, SelectionChangedEventArgs e) { // Check all the newly added items. foreach (DateTime selectedDate in e.AddedItems) { if ((selectedDate.DayOfWeek == DayOfWeek.Saturday) || (selectedDate.DayOfWeek == DayOfWeek.Sunday)) { lblError.Text = "Weekends are not allowed"; ((Calendar)sender).SelectedDates.Remove(selectedDate); } } }