wpf基础

news2024/9/17 9:00:27

快速换行的快捷键

vs 工具->选项->文本编辑器->XAML->Formatting(格式化)->spacing(间距)-> 选择第三个 ,将各个属性分行放置。

然后按Ctrl+K+D

如何快速生成下面的代码

鼠标放在Slider_ValueChanged上面然后Fn+F12 就可以快速生成

wpf中的绑定

在WPF数据绑定中,有几种不同的绑定模式,每种模式定义了数据如何在绑定目标(通常是UI控件)和绑定源(如视图模型)之间流动。以下是这些绑定模式的简要说明:

单项绑定(OneWay Binding)

单项绑定是最常见的数据绑定模式,数据只能从绑定源流向绑定目标。当源属性更改时,这些更改会自动反映到绑定的目标上,但目标的更改不会反馈到源。

  • 用途:适用于只从源更新到目标的情况,例如,显示数据。

  • XAMLMode=OneWay

<TextBox Text="{Binding Path=PropertyName, Mode=OneWay}" />

双向绑定(TwoWay Binding)

双向绑定允许数据在绑定目标和绑定源之间双向流动。这意味着用户对绑定目标(如文本框)所做的更改会自动更新绑定源的属性,反之亦然。

  • 用途:适用于需要收集用户输入并更新数据源的情况。

  • XAMLMode=TwoWay

<TextBox Text="{Binding Path=PropertyName, Mode=TwoWay}" />

单次绑定(OneTime Binding)

单次绑定仅在绑定初始化时将数据从绑定源传输到绑定目标。之后,即使源更改,目标也不会更新。

  • 用途:适用于只需要设置初始值,之后不再需要同步的情况。

  • XAMLMode=OneTime

<TextBox Text="{Binding Path=PropertyName, Mode=OneTime}" />

单项元素绑定(OneWayToSource Binding)

这个术语不是WPF数据绑定的标准模式,但它通常被用来描述单项绑定的一种变体,其中数据只从绑定目标流向绑定源。这不是WPF数据绑定的内置模式,但可以通过编程方式或自定义绑定实现。

更新源触发器(UpdateSourceTrigger)

对于双向绑定,UpdateSourceTrigger属性定义了更新绑定源属性的时机:

  • PropertyChanged:每当绑定目标属性更改时更新源(默认)。

  • LostFocus:当绑定目标失去焦点时更新源。

  • Explicit:只有当调用UpdateSource方法时才更新源。

<TextBox Text="{Binding Path=PropertyName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />

示例代码

以下是如何在XAML中使用这些绑定模式的示例:

<!-- 单项绑定 -->
<TextBox Text="{Binding Name, Mode=OneWay}" />
​
<!-- 双向绑定 -->
<TextBox Text="{Binding Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
​
<!-- 单次绑定 -->
<TextBox Text="{Binding Name, Mode=OneTime}" />

在实际应用中,选择哪种绑定模式取决于你的具体需求和场景。如果你正在显示一个标签或只读字段,你可能会使用单项绑定。如果你需要用户能够编辑字段,并将更改保存回数据源,那么双向绑定是更好的选择。单次绑定可能用于设置初始值,而不需要后续同步。

例如双向绑定

复杂案例(没有使用双向简单绑定 比较繁琐)

<Window x:Class="_7._29day03WPF.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:_7._29day03WPF"
        mc:Ignorable="d"
        Title="MainWindow"
        Height="450"
        Width="800">
    <Grid>
        <StackPanel>
            <Slider x:Name="slider"
                    Margin="5"
                    ValueChanged="Slider_ValueChanged" />
            <TextBox x:Name="textbox1"
                     Margin="5"
                     Height="30" TextChanged="textbox1_TextChanged"
                     />
            <TextBox x:Name="textbox2"
                     Margin="5"
                     Height="30" />
            <TextBox x:Name="textbox3"
                     Margin="5"
                     Height="30" />
        </StackPanel>
    </Grid>
</Window>

using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
​
namespace _7._29day03WPF
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
​
        private void Slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
        {
            textbox1.Text = slider.Value.ToString();
            textbox2.Text = slider.Value.ToString();
            textbox3.Text = slider.Value.ToString();
        }
​
        private void textbox1_TextChanged(object sender, TextChangedEventArgs e)
        {
            if (double.TryParse(textbox1.Text, out double result))
                slider.Value = result;
​
        }
    }
}

可以通过拖动修改文本框的内容 也可以用文本框来修改Slider的位置

简单案例:

<Window x:Class="_7._29day03WPF.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:_7._29day03WPF"
        mc:Ignorable="d"
        Title="MainWindow"
        Height="450"
        Width="800">
    <Grid>
        <StackPanel>
            <Slider x:Name="slider"
                    Margin="5" />
            <TextBox Text="{Binding ElementName=slider,Path=Value, Mode=OneTime}"
                     Margin="5"
                     Height="30" />
            <TextBox Text="{Binding ElementName=slider,Path=Value, Mode=OneWay}"
                     Margin="5"
                     Height="30" />
            <TextBox Text="{Binding ElementName=slider,Path=Value,Mode=OneWayToSource}"
                     Margin="5"
                     Height="30" />
            <TextBox Text="{Binding ElementName=slider,Path=Value,Mode=TwoWay}"
                     Margin="5"
                     Height="30" />
        </StackPanel>
    </Grid>
</Window>

using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
​
namespace _7._29day03WPF
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
​
        
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1962392.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Golang处理Word文档模板实现标签填充|表格插入|图标绘制和插入|删除段落|删除标签

本教程主要实现【Golang处理Word文档模板实现标签填充|表格插入|图标绘制和插入|删除段落|删除标签】。 本文源码&#xff1a;https://gitee.com/songfayuan/go-zero-demo 教程源码分支&#xff1a;master 分支&#xff08;_examples/word-template/fill-word-template.go&…

ZFIU001 批导会计凭证报错,通过监控点和消息类来定位触发的位置

在创建会计凭证的时候&#xff0c;发送错误&#xff0c;通过打消息类和消息号的条件断点/监控点才解决 文章目录 报错消息号&#xff1a;F5846 创建监控点创建条件断点 报错原因非常注意 报错 消息号&#xff1a;F5846 创建监控点 创建条件断点 报错原因 非常注意

Java8新特性之Stream-Map

Map一些新方法的具体使用案例 1、getOrDefault:default V getOrDefault(Object key, V defaultValue) package com.qbb.threadpool;import java.util.HashMap; import java.util.Map;/*** author QiuQiu&LL (个人博客:https://www.cnblogs.com/qbbit)* version 1.0* date…

力扣高频SQL 50题(基础版)第三十四题

文章目录 力扣高频SQL 50题&#xff08;基础版&#xff09;第三十四题1978.上级经理已离职的公司员工题目说明实现过程准备数据实现方式结果截图 力扣高频SQL 50题&#xff08;基础版&#xff09;第三十四题 1978.上级经理已离职的公司员工 题目说明 表: Employees -------…

论文阅读:基于生物神经元的模拟游戏世界感知与学习

论文内容概述 AI要90分钟学会的游戏&#xff0c;人脑细胞竟在5分钟搞定了。Cell在2022年的研究中&#xff0c;使用80万体外神经元细胞(DishBrain)竟然学会玩70年代经典街机游戏Pong&#xff01; 论文链接&#xff1a;In vitro neurons learn and exhibit sentience when emb…

HCIA总结

一、情景再现&#xff1a;ISP网络为学校提供了DNS服务&#xff0c;所以&#xff0c;DNS服务器驻留在ISP网络内&#xff0c;而不再学校网络内。DHCP服务器运行在学校网络的路由器上 小明拿了一台电脑&#xff0c;通过网线&#xff0c;接入到校园网内部。其目的是为了访问谷歌网站…

ctfshow 权限维持 web670--web679

web670 <?php// 题目说明&#xff1a; // 想办法维持权限&#xff0c;确定无误后提交check&#xff0c;通过check后&#xff0c;才会生成flag&#xff0c;此前flag不存在error_reporting(0); highlight_file(__FILE__);$a$_GET[action];switch($a){case cmd:eval($_POST[c…

2024年技校云计算实验室建设及云计算实训平台整体解决方案

随着信息技术的飞速发展&#xff0c;云计算已成为推动数字化转型的关键力量。技校作为培养技能型人才的摇篮&#xff0c;建设云计算实验室并配套完善的实训平台&#xff0c;对于提升学生的专业技能、增强就业竞争力具有重要意义。本文旨在提出2024年技校云计算实验室建设及云计…

列表内容过多卡顿?有索引栏如何实现滚动加载?

&#x1f453;写在前面 很多小伙伴可能在开发业务中会遇到这种问题&#xff0c;数据列表过多&#xff0c;造成dom一次性渲染卡顿&#xff0c;本文主要介绍滚动加载&#xff0c;实现在有索引栏的列表中使用滚动加载的方法。 本文技术栈使用的是vue2vant2&#xff0c;其他框架组…

letcode - string

翻转字符串 344. 反转字符串 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/reverse-string/ class Solution { public:void reverseString(vector<char>& s) {reverse(s.begin(),s.end());//直接上逆置接口} }; 函数签名: void reverseStr…

CVPR 2024 录用数据出炉!这些方向是大趋势!

一年一度的计算机视觉和模式识别会议&#xff08;CVPR&#xff09;一直是 CV 界前沿研究的灯塔。 CVPR 2024 录用结果显示&#xff0c;今年共有 2719 篇论文被接收&#xff0c;录用率 23.6%。 那么大模型时代&#xff0c;今年的研究主题有哪些变化&#xff1f; 最近&#xf…

【Python】 ValueError: too many values to unpack 解决方案

【Python】 ValueError: too many values to unpack 解决方案 在Python编程中&#xff0c;ValueError: too many values to unpack是一个常见的错误&#xff0c;通常出现在使用解包操作时。本文将深入探讨这个错误的原因、解决思路、解决方法&#xff0c;并通过具体案例帮助大…

【Python学习手册(第四版)】学习笔记09.3-Python对象类型-分类、引用VS拷贝VS深拷贝、比较、相等、真假值等详解

个人总结难免疏漏&#xff0c;请多包涵。更多内容请查看原文。本文以及学习笔记系列仅用于个人学习、研究交流。 这部分稍杂&#xff0c;视需要选择目录读取。 主要讲的是对之前的所有对象类型作复习&#xff0c;以通俗易懂、由浅入深的方式进行介绍&#xff0c;所有对象类型…

『康之泉活水馆』手游:打造夏日梦幻水世界

设计背景 夏日的热浪与城市的喧嚣困扰着忙碌奔波的人群&#xff0c;康之泉活水馆&#xff0c;作为多功能的室内水上乐园&#xff0c;以其独特的魅力&#xff0c;成为夏日避暑的理想之地&#xff0c;让身心得以彻底放松。 设计理念 优联前端以康之泉品牌IP形象“康康”为灵感&a…

[GYCTF2020]FlaskApp (pin码,jinja2绕过注入)

题目就是flask 下面是判断模版注入的方法 a{*comment*}b和{{7*7}}base64编码后解码都报错no&#xff0c;无法判断模版引擎 直接用下jinja2的试一试&#xff0c;把编码后的密文拿去解码&#xff0c;payload&#xff1a; {{"".__class__mro(2)__subclasses__()}} 报…

英文文献翻译方法哪个好?高效率的翻译方法分享

三伏天的酷热也抵挡不住学术人探索知识的脚步&#xff0c;阅读和翻译英文文献几乎已经成为了许多研究者和学者的日常。然而在面对浩如烟海的英文资料时&#xff0c;如何高效准确地进行翻译&#xff0c;成为了亟待解决的问题。 今天我便挖掘到了5款实用的英文文献翻译工具&…

4.1.1、操作系统的概述

操作系统的作用:通过资源管理提高计算机系统的效率;改善人机界面向用户提供友好的工作环境。 操作系统的特征:并发性、共享性、虚拟性、不确定性。 操作系统的功能:进程管理、存储管理、文件管理、设备管理、作业管理。 操作系统的分类:批处理操作系统、分时操作系统(轮流使…

美股:苹果选择谷歌芯片支持人工智能技术

最近的研究报告显示&#xff0c;苹果公司在其新一代人工智能工具和功能套件中选择依赖谷歌设计的芯片&#xff0c;而非市场领导者 Nvidia。这一决定引发了业界的关注&#xff0c;尤其是考虑到Nvidia在人工智能处理器市场的主导地位。 谷歌云的TPU在苹果的AI基础设施中发挥关键作…

计算机再过几年会没落?

大部分人卷的计算机&#xff1a;Java web 实际上的计算机&#xff1a;web&#xff0c;图形学&#xff0c;Linux系统开发&#xff0c;一系列嵌入式开发&#xff0c;数据库&#xff0c;高性能服务器&#xff0c;中间件开发&#xff0c;三维建模&#xff0c;网络安全&#xff0c;…

vue2 封装弹框组件

安装 element-ui npm install element-ui --save ---force main.js 导入 import Vue from vue; import ElementUI from element-ui; import element-ui/lib/theme-chalk/index.css; import App from ./App.vue; Vue.use(ElementUI); new Vue({ el: #app, render: h > h(Ap…