WPF学习笔记(2)
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);
}
}
}

浙公网安备 33010602011771号