• 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);
                    }
                }
    
            }
    

      

  • 相关阅读:
    vue——样式穿透/deep/ >>> ::v-deep 三者的区别
    CSS Grid 网格布局教程
    CSS3中的display:grid网格布局介绍
    windows 好用的命令
    django分页
    django.template.exceptions.TemplateSyntaxError: 'staticfiles' is not a registered tag library. Must
    bootstrap模板
    django报错 django.core.exceptions.ImproperlyConfigured: mysqlclient 1.4.0 or newer is required; you have 0.10.1
    bootstrapV4.4.1版本下载
    Dots demo解释相关
  • 原文地址:https://www.cnblogs.com/DragonX/p/3476855.html
Copyright © 2020-2023  润新知