2024年大数据最新wpf 学习笔记,这可能是目前最全的

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

参考链接:c# wpf 实现窗口任意区域点击拖动_wpf 拖动窗体-CSDN博客

3.实现一个透明、无边框、鼠标穿透的WPF窗体

参考链接:Simple WPF:实现一个透明、无边框、鼠标穿透的WPF窗体 - 知乎 (zhihu.com)")

一步一步实现WPF透明化窗口_wpf透明窗体-CSDN博客

//设置 AllowsTransparency="True" WindowStyle="None" Background="Transparent"
<Window x:Class="WpfApp1.subWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        PreviewMouseLeftButtonDown="Window_PreviewMouseLeftButtonDown"
        PreviewMouseMove="Window_PreviewMouseMove"
        PreviewMouseLeftButtonUp="Window_PreviewMouseLeftButtonUp"
        xmlns:local="clr-namespace:WpfApp1"
        mc:Ignorable="d"
        Title="subWindow" Height="500" Width="700" AllowsTransparency="True" WindowStyle="None" Background="Transparent">

4.去除标题栏

//设置 WindowStyle ="None"

<Window x:Class="NonFrameWindow.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:NonFrameWindow"
        mc:Ignorable="d"
        WindowStyle ="None" ResizeMode="CanMinimize"
        Title="MainWindow" Height="450" Width="800">

5.按钮渐变色  鼠标悬停时按钮不变色  控件重叠

 <Window.Resources>
    //设置grid的背景色
     <Style TargetType="Grid" x:Key="ggrid">
         <Setter Property="Background" Value="#F5F7F6F6"></Setter>
     </Style>

     <!--按钮渐变色-->
     <LinearGradientBrush x:Key="Brush2" StartPoint="0,0" EndPoint="0,1">
         <LinearGradientBrush.GradientStops>
             <GradientStop Offset="0" Color="#FF03A795" />
             <GradientStop Offset="1" Color="#FF03786B" />
         </LinearGradientBrush.GradientStops>
     </LinearGradientBrush>
     <LinearGradientBrush x:Key="Brush3" StartPoint="0,0" EndPoint="0,1">
         <LinearGradientBrush.GradientStops>
             <GradientStop Offset="0" Color="#FF03A795" />
             <GradientStop Offset="1" Color="#FF03786B" />
         </LinearGradientBrush.GradientStops>
     </LinearGradientBrush>

   <!--button鼠标悬停时不变色-->
     <Style x:Key="ButtonStyle" TargetType="{x:Type Button}">
         <Setter Property="Template">
             <Setter.Value>
                 <ControlTemplate TargetType="{x:Type Button}">
                     <Border Background="{TemplateBinding Background}">
                         <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
                     </Border>
                 </ControlTemplate>
             </Setter.Value>
         </Setter>
         <Style.Triggers>
             <Trigger Property="IsMouseOver" Value="True">
                 <Setter Property="Background" Value="{x:Null}"/>
             </Trigger>
         </Style.Triggers>
     </Style>
 </Window.Resources>


//调用

<Button Width="130" Height="50" Margin="5" Background="Transparent" BorderThickness="0,0,0,0" Style="{DynamicResource ButtonStyle}">
    <Canvas>
        <Border BorderThickness="2" Canvas.Left="-17" Canvas.Top="-14" Background="{StaticResource Brush3}" CornerRadius="4" Height="35" Width="80">
       //border的渐变色
            <Border.BorderBrush>
                <RadialGradientBrush>
                    <GradientStop Color="Black"/>
                    <GradientStop Color="#FFCCCBCC" Offset="1"/>
                </RadialGradientBrush>
            </Border.BorderBrush>
            <Label Content="123" FontSize="14" Margin="11,1,15,0" />
        </Border>
        <Border BorderThickness="2" Canvas.Left="-50" Canvas.Top="-17"  Background="{StaticResource Brush2}" CornerRadius="18" Height="42" MinWidth="25">
            <Border.BorderBrush>
                <RadialGradientBrush>
                    <GradientStop Color="Black"/>
                    <GradientStop Color="#FFCCCBCC" Offset="1"/>
                </RadialGradientBrush>
            </Border.BorderBrush>
            <Label Content="12" FontSize="14" HorizontalContentAlignment="Center" Margin="0,4,0,0" MinWidth="40"></Label>
        </Border>
    </Canvas>
</Button>

6. grid 分割线

       <Grid.RowDefinitions>
           <RowDefinition Height="9*"/>
           <RowDefinition Height="9*"/>
           <RowDefinition Height="12*"/>
           <RowDefinition Height="12*"/>
           <RowDefinition Height="24*"/>
           <RowDefinition Height="3*"/>
       </Grid.RowDefinitions>
       <Rectangle Stroke="#FF6F6D6D"  Grid.Row="1"/>
       <Rectangle Stroke="#FF6F6D6D"  Grid.Row="2"/>
       <Rectangle Stroke="#FF6F6D6D" Grid.Row="3"/>
       <Rectangle Stroke="#FF6F6D6D" Grid.Row="4"/>
       <Rectangle Stroke="#FF6F6D6D" Grid.Row="5"/>

7. textblock 样式(渐变色 )

<TextBlock VerticalAlignment="Bottom"  HorizontalAlignment="Left" FontSize="25" FontWeight="Black" Cursor="AppStarting" Height="30">
    <TextBlock.Style>
        <Style  TargetType="{x:Type TextBlock}">
            <Setter Property="Foreground">
                <Setter.Value>
                    <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,0.5">
                        <GradientStop Color="#FF87E1FF" Offset="0.0" />
                        <GradientStop Color="#FF009FFF" Offset="0.5" />
                    </LinearGradientBrush>
                </Setter.Value>
            </Setter>
        </Style>
 </TextBlock.Style><Run Text="抢答器专家"/>
</TextBlock>

//设置字体颜色
 <TextBlock Foreground="#FF03786B">加分</TextBlock>

8.textbox 样式(圆角)

<TextBox VerticalAlignment="Center" HorizontalAlignment="Center" Height="30" Width="60" >
    <TextBox.Resources>
        <Style TargetType="{x:Type Border}">
            <Setter Property="CornerRadius" Value="2"/>
            <Setter Property="BorderBrush" Value="#c1d0dc"/>
        </Style>
    </TextBox.Resources>
</TextBox>

9.button

//设置圆角
<Button.Resources>
    <Style TargetType="{x:Type Border}">
        <Setter Property="CornerRadius" Value="3"></Setter>
    </Style>
</Button.Resources>

//设置阴影
 <Button.Effect>
     <DropShadowEffect BlurRadius="20" ShadowDepth="0" Color="#DADADA" Opacity="0.2"/>
 </Button.Effect>

10.ComboBox

xaml:
<ComboBox Width="80" SelectionChanged="ComboBox_SelectionChanged">
    <ComboBoxItem IsSelected="True">0</ComboBoxItem>
    <ComboBoxItem>5</ComboBoxItem>
    <ComboBoxItem>10</ComboBoxItem>
    <ComboBoxItem>20</ComboBoxItem>
</ComboBox>

//允许编辑  设置IsEditable="True",即前面变成文本框形式
<ComboBox x:Name="AddScoreCombox" Width="80" IsEditable="True">
    <ComboBoxItem>0</ComboBoxItem>
    <ComboBoxItem>10</ComboBoxItem>
    <ComboBoxItem>11</ComboBoxItem>
    <ComboBoxItem IsSelected="True">19</ComboBoxItem>
</ComboBox>




cs:
 private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     int count = Convert.ToInt32(combobox.SelectedValue.ToString().Replace("System.Windows.Controls.ComboBoxItem: ", ""));
    
     SubWindow subWindow = SubWindow.pwindow;
     subWindow.Close();
     SubWindow.hcount = count;
     SubWindow subWindow2 = new SubWindow();
     subWindow2.Show();
 }



//动态生成Items
 for(int i = 1; i <= SubWindow.count; i++)
 {
     combobox.Items.Add(i.ToString());
 }

11.在子窗口控制主窗口动态生成控件时,会出现两个相同的窗口

解决办法:

在主窗口里

 public static SubWindow pwindow = null;

     public SubWindow()
     {
         InitializeComponent();
         pwindow = this;   //将当前窗口给pwindow,方便在setting里使用
     }

在子窗口里,

 SubWindow subWindow = SubWindow.pwindow;
 subWindow.Close();  //关闭上一个窗口

 SubWindow.hcount = count;
 SubWindow subWindow2 = new SubWindow();
 subWindow2.Show();

12.RadioButton

  <RadioButton GroupName="zu" Margin="20,10,0,10" Grid.Row="0"  Content="12" Click="RadioButton_Click"> </RadioButton>
  <RadioButton IsChecked="True" GroupName="zu" Margin="20,10,0,10" Grid.Row="1" Content="34" Click="RadioButton_Click"></RadioButton>


private void RadioButton_Click(object sender, RoutedEventArgs e)
{
    //获取radiobutton的值
    RadioButton radioButton = sender as RadioButton;
    radiobuttoncContent = radioButton.Content.ToString();
    if (radioButton.IsChecked == true)
    {
        SubWindow subWindow = SubWindow.pwindow;
        subWindow.Close();
        SubWindow subWindow2 = new SubWindow();
        subWindow2.Show();

    }
}

13.slider

<WrapPanel Margin="20,70,0,0">
    <TextBlock FontSize="14" LineHeight="12" Foreground="#333333">调整</TextBlock>
    <Slider x:Name = "slider2" Width="90" Minimum = "0" Maximum = "3"  ValueChanged = "slider1_ValueChanged" Margin = "23,0,0,0"></Slider>
    <TextBox x:Name="textbox1" Text="{Binding Textbox1}" Width="25" Height="25" Margin="5,-3,0,0" VerticalContentAlignment="Center" HorizontalContentAlignment="Center"></TextBox>
</WrapPanel>


 public static int buttonSize = 0;

private void slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
    string val = Convert.ToInt32(e.NewValue).ToString();
    //string msg = String.Format("Current value: {0}", val);
    this.textbox1.Text = val;
    buttonSize =Convert.ToInt32(val);
    SubWindow subWindow = SubWindow.pwindow;
    subWindow.Close();
    SubWindow subWindow2 = new SubWindow();
    subWindow2.Show();
}

14.动态生成控件

 private void CreateCanvas3()
 {
     LinearGradientBrush brush3 = (LinearGradientBrush)this.FindResource("Brush3");
     LinearGradientBrush brush2 = (LinearGradientBrush)this.FindResource("Brush2");
     Canvas canvas = new Canvas()
     {
         Margin = new Thickness(30 + buttonsize * 3 + Llength, 40 + buttonsize * 4 + hlength * 2, 90 + buttonsize * 3 + Llength, 40 + buttonsize * 3 + hlength * 2)
     };
     //成绩
     Border border = new Border()
     {
         BorderThickness = new Thickness(2),
         BorderBrush = System.Windows.Media.Brushes.WhiteSmoke,
         Background = brush3,
         CornerRadius = new CornerRadius(4),
         Margin = new Thickness(30 + buttonsize * 6, 20 + buttonsize * 6, 2 + buttonsize * 6, 0+buttonsize * 6),
         Height = 35 + buttonsize * 4,
         Width = 80 + buttonsize * 5
     };
    
     Label label = new Label()
     {
         Content = "123",
         FontSize = 14 + buttonsize * 2,
         Margin = new Thickness(15, 1, 15, 0),
         HorizontalContentAlignment = HorizontalAlignment.Center,
         VerticalContentAlignment = VerticalAlignment.Center,
     };
     //名称
     Border border2 = new Border()
     {
         BorderThickness = new Thickness(2,0,2,2),
         BorderBrush = System.Windows.Media.Brushes.WhiteSmoke,
         Background = brush3,
         CornerRadius = new CornerRadius(0,0,4,4),
         Margin = new Thickness(30 + buttonsize * 6, 53 + buttonsize * 6, 0 + buttonsize * 6, 0 + buttonsize * 6),
         Height = 35 + buttonsize * 4,
         Width = 80 + buttonsize * 5
     };
     Label label2 = new Label()
     {
         Content = "456",
         FontSize = 14 + buttonsize * 2,
         Margin = new Thickness(18, 1, 15, 0),
         HorizontalContentAlignment = HorizontalAlignment.Center,
         VerticalContentAlignment = VerticalAlignment.Center,
     };
     border.Child = label;
     border2.Child = label2;
     //组号
     Border border1 = new Border()
     {
         BorderThickness = new Thickness(2),
         BorderBrush = System.Windows.Media.Brushes.WhiteSmoke,
         Background = brush2,
         CornerRadius = new CornerRadius(50),
         Margin = new Thickness(15 + buttonsize * 4, 17 + buttonsize * 4, 0, 0),
         Height = 42 + buttonsize * 2,
         Width = 40 + buttonsize * 2
     };
     Label label1 = new Label()
     {
         Content = "1",
         FontSize = 14 + buttonsize * 2,
         HorizontalContentAlignment = HorizontalAlignment.Center,
         VerticalContentAlignment = VerticalAlignment.Center,
         Margin = new Thickness(0, 4, 0, 0),
         MinWidth = 40
     };
     border1.Child = label1;
     canvas.Children.Add(border);
     canvas.Children.Add(border2);
     canvas.Children.Add(border1);
     canvaswidth = 110;
     buttonwrap.Children.Add(canvas);
 }

15.控件右击事件

右击事件是MouseRightButtonUp

//windows.resource里定义一个ContextMenu
<ContextMenu x:Key="ContextMenu">
    <MenuItem Name="setting" Header="设置" Click="MenuItem_Click">
    </MenuItem>
</ContextMenu>


//右击事件是MouseRightButtonUp,右击之后出现ContextMenu里的设置
 <Grid MouseRightButtonUp="Mouse_RightButtonUp" Margin="0,10,0,0">
     <WrapPanel x:Name="buttonwrap">
     </WrapPanel>
 </Grid>


private void Mouse_RightButtonUp(object sender, MouseButtonEventArgs e)
{
    Grid sp = (Grid)sender;
    ContextMenu cm = new ContextMenu();
   ContextMenu ct= this.FindResource("ContextMenu") as ContextMenu;
   sp.ContextMenu = ct;
}


  //打开设置窗口
  private void MenuItem_Click(object sender, RoutedEventArgs e)
  {
      setting st = new setting();
      st.ShowDialog();
  }

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

private void MenuItem_Click(object sender, RoutedEventArgs e)
{
setting st = new setting();
st.ShowDialog();
}




[外链图片转存中...(img-M7Oz84oW-1714881016000)]
[外链图片转存中...(img-v7BrrKwv-1714881016000)]

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值