当前位置:   article > 正文

WPF MaterialDesign 初学项目实战(6):设计首页(2),设置样式触发器。已完结_materialdesign wpf

materialdesign wpf

原项目视频

WPF项目实战合集(2022终结版) 26P

源码地址

WPF项目源码

其他内容

WPF MaterialDesign 初学项目实战(0):github 项目Demo运行
WPF MaterialDesign 初学项目实战(1)首页搭建
WPF MaterialDesign 初学项目实战(2)首页导航栏样式
WPF MaterialDesign 初学项目实战(3)动态侧边栏
WPF MaterialDesign 初学项目实战(4)侧边栏路由管理
WPF MaterialDesign 初学项目实战(5):设计首页

环境搭建:

我想到WPF的环境搭建比较复杂,我之后的博客会把所有的环境写下来。

NuGet

在这里插入图片描述

命名空间:

//materialDesign,prism材质包
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
//点击反馈
xmlns:behaviors="http://schemas.microsoft.com/xaml/behaviors"
//引入prism
xmlns:prism="http://prismlibrary.com/"


//materialDesign 资源样式
TextElement.Foreground="{DynamicResource MaterialDesignBody}"
TextElement.FontWeight="Regular"
TextElement.FontSize="13"
TextOptions.TextFormattingMode="Ideal"
TextOptions.TextRenderingMode="Auto"
Background="{DynamicResource MaterialDesignPaper}"
FontFamily="{DynamicResource MaterialDesignFont}"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

本期目标

新建列表

动态生成列表,其实都是老一套方法了。

引用
声明List<实体>
数据对象绑定
Binding对应属性
C#新建实体类
ViewModels
View
DateTemplate
最终页面显示

看一下布局
在这里插入图片描述
在这里插入图片描述
解析一下页面布局

  • Gird(灰):分成左右两个
    • DockPanel(红):显示标题和按钮
    • ListBox(蓝):显示信息列表

然后就是类的继承关系:

Item基类
待办事项Item
备忘事项Item

代码:

  public class ItemBase
    {
        public int Id { get; set; }

        public DateTime CreateDate { get; set; }

        public DateTime UpdateTime { get; set; }

        
    }
    public class ToDoItem : ItemBase
    {

        public string? Title { get; set; }

        public string? Content { get; set; }

        public int Status { get; set; }


    }
    public class MemoItem :ItemBase
    {
        public string? Title { get; set; }

        public string? Content { get; set; }

        public int status { get; set; }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

声明变量


    public class IndexViewModel : BindableBase
    {
        public IndexViewModel()
        {
  			.......
            ToDoItems = new ObservableCollection<ToDoItem> ();
            MemoItems = new ObservableCollection<MemoItem> ();
            
            
            Create_ToDo_Test();

        }
		.......

        private ObservableCollection<ToDoItem> toDoItems;
        public ObservableCollection<ToDoItem> ToDoItems
        {
            get { return toDoItems; }
            set { toDoItems = value; RaisePropertyChanged(); }
        }

        private ObservableCollection<MemoItem> memoItems;

        public ObservableCollection<MemoItem> MemoItems
        {
            get { return memoItems; }
            set { memoItems = value; RaisePropertyChanged(); }
        }


        void Create_ToDo_Test()
        {
            for(int i = 0; i < 10; i++)
            {
                ToDoItems.Add(new ToDoItem() { Title = "todo标题"+i, Content = "todoContent" });
                MemoItems.Add(new MemoItem() { Title = "Memo标题"+i , Content = "MemoContent"});
            }

        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

在ViewIndex里面引用

<Grid Grid.Row="2">
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>

            <Border Margin="10"
                    CornerRadius="4"
                    Opacity="0.1"
                    Background="#BEBEBE" />

            <StackPanel Margin="15">
                <DockPanel LastChildFill="False">
                    <TextBlock Text="代办事项"
                               FontSize='30'
                               FontWeight="Bold" />

                    <Button DockPanel.Dock="Right"
                            VerticalAlignment="Top"
                            Margin="0,0,10,0"
                            Width="35"
                            Height="35"
                            Style="{StaticResource MaterialDesignFloatingActionAccentButton}">
                        <materialDesign:PackIcon Kind="Add" />
                    </Button>
                </DockPanel>
                <ListBox  ItemsSource="{Binding ToDoItems}"  Height="380"
                          Cursor="" ScrollViewer.VerticalScrollBarVisibility="Disabled">
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <StackPanel Cursor="Hand">
                                <TextBlock Text="{Binding Title}" FontSize="18" />
                                <TextBlock Text="{Binding Content}" Opacity="0.5" Margin="5,5,0,0"/>
                            </StackPanel>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>
            </StackPanel>


            <Border Margin="10"
                    CornerRadius="4"
                    Opacity="0.1"
                    Grid.Column="1"
                    Background="#BEBEBE" />

            <StackPanel Margin="15"
                        Grid.Column="1">
                <DockPanel LastChildFill="False">
                    <TextBlock Text="备忘录"
                               FontSize='30'
                               FontWeight="Bold" />

                    <Button DockPanel.Dock="Right"
                            VerticalAlignment="Top"
                            Margin="0,0,10,0"
                            Width="35"
                            Height="35"
                            Style="{StaticResource MaterialDesignFloatingActionAccentButton}">
                        <materialDesign:PackIcon Kind="Add" />
                    </Button>


                </DockPanel>
                <ListBox  ItemsSource="{Binding MemoItems}"
                          Height="380"
                          Cursor=""
                          ScrollViewer.VerticalScrollBarVisibility="Disabled"
                          >
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <StackPanel>
                                <TextBlock Text="{Binding Title}"
                                           FontSize="18" />
                                <TextBlock Text="{Binding Content}"
                                           Opacity="0.5"
                                           Margin="5,5,0,0" />
                            </StackPanel>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>
            </StackPanel>
        </Grid>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83

实现效果:

在这里插入图片描述
数据绑定使用频率较高,之后不再详细描述代码。毕竟做笔记的目的不是把全部都记下来,是把不会的记下来。

如何设置触发器

触发器的设置顺序

  • TargetType:触发源,例如border
    • Tiggers
      • Tigger Property+value:触发事件,例如border边框鼠标滑动事件
        • Setter :触发结果
          • Setter.value:有些触发结果要搭配Setter设定返回值

示例代码,鼠标滑动边框发光

<!--声明触发器对象-->
        <Style TargetType="Border">
            <!--声明触发器-->
            <Style.Triggers>
                <Trigger Property="IsMouseOver"
                         Value="True">
                    <Setter Property="Effect">
                        <Setter.Value>
                            <DropShadowEffect Color="#DDDDDD"
                                              ShadowDepth="2"
                                              BlurRadius="10" />
                        </Setter.Value>
                    </Setter>
                </Trigger>
            </Style.Triggers>
        </Style>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

实现效果:

在这里插入图片描述

结尾

我现在基础掌握的差不多了,之后的项目代码只挑选难点进行描述,简单重复的地方我就跳过了。如果想要源码的可以去B站视频上面去找源码。

后来我想了一下,笔记重要的是笔记,而不是重复的工作。这个项目实战的笔记到此为止了。后面只会更新WPF的具体难点的解决。

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/97865
推荐阅读
  

闽ICP备14008679号