当前位置: 首页 > article >正文

WPF一个控件根据另一个控件的某种状态的改变从而改变自身某种状态

WPF 一个控件根据另一个控件的某种状态的改变从而改变自身某种状态

  前提,这里根据 Image 控件 Source 属性为 null 时,让 Label 控件可见,不为 null 时, Label 控件不可见为例子展示,代码如下:

<Canvas>
   <Image Width="100" Height="100" Source="{Binding LeftMatL}" Stretch="Fill"></Image>
   <Label Visibility="Visible" Width="100" Height="100" Content="待检测"></Label>
</Canvas>

在这里插入图片描述

方法一:控件切换位置

  让 Image 控件和 Label 控件在 xaml 中互换,这样当 Image 有图片时就会将 Label 控件给覆盖,从而达到让 Label 控件不可见的效果。

<Canvas>
 	<Label Visibility="Visible" Width="100" Height="100" Content="待检测"></Label>
    <Image Width="100" Height="100" Source="{Binding LeftMatL}" Stretch="Fill"></Image>
</Canvas>

在这里插入图片描述
  但是如果图片是透明的,用这种方法就不行

方法二:根据触发来修改状态

  使用 DataTrigger,根据值的变换时,来触发对应的操作,从而达到对应的效果。

<Canvas>
	<Image x:Name="img" Width="100" Height="100" Source="{Binding LeftMatL}" Stretch="Fill"></Image>
	<Label Name="label" Visibility="Visible" Width="100" Height="100" Content="待检测">
	    <Label.Template>
	        <!--重写 label 控件-->
	        <ControlTemplate TargetType="Label" >
	            <!--起名为 tb, 并且让其默认不可见,然后设置触发器让其满足 Image 控件某个效果时,才让其可见-->
	            <TextBlock x:Name="tb" Text="{TemplateBinding Content}" Visibility="Collapsed" Foreground="Red" />
	            <ControlTemplate.Triggers>
	                <!--使用 DataTrigger 当 Image 控件某个书信给的值变化时或达到某种结果时,触发-->
	                <DataTrigger Binding="{Binding ElementName=img,Path=Source}" Value="{x:Null}" >
	                    <!--指定修改 tb 的可见状态-->
	                    <Setter Property="Visibility" TargetName="tb" Value="Visible" />
	                </DataTrigger>
	            </ControlTemplate.Triggers>
	        </ControlTemplate>
	    </Label.Template>
	</Label>
</Canvas>

  Image 控件有图时
在这里插入图片描述
  Image 控件无图时
在这里插入图片描述

方法三:后台根据 Image Source 属性是否为空修改 Label Visibility 状态

  不做赘述


http://www.kler.cn/news/324668.html

相关文章:

  • 机械键盘驱动调光DIY--【DAREU】
  • Makefile编程:4种赋值差异
  • Python爬虫lxml模块安装导入和xpath基本语法
  • 计算机毕业设计 校运会管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • ssm模糊知识点整合
  • Java | Leetcode Java题解之第442题数组中重复的数据
  • 滚雪球学MySQL[3.1讲]: 高级SQL查询
  • leetcode_015_三数之和解析
  • Python集成测试详解
  • 工业边缘计算网关和普通网关的区别-天拓四方
  • python基础语法--顺序结构
  • SpringCloud源码:客户端分析(一)- SpringBootApplication注解类加载流程
  • 工业缺陷检测——Windows 10本地部署AnomalyGPT工业缺陷检测大模型
  • naocs注册中心,配置管理,openfeign在idea中实现模块间的调用,getway的使用
  • Python爬虫bs4的基本使用
  • Android平台如何获取CPU占用率和电池电量信息
  • Unity 与虚幻引擎对比:两大游戏开发引擎的优劣分析
  • 【工具变量】无废城市试点DID数据集(2000-2023)
  • 【C++笔记】八、结构体 [ 4 ]
  • 六练习题笔记
  • C++启动其它进程的方式
  • 【运动控制】关于GPIO通用输入口的锁存功能
  • RTX 5090、5080规格完整曝光,来看来看
  • 一起搭WPF界面之界面切换绑定
  • 深度学习之开发环境(CUDA、Conda、Pytorch)准备(4)
  • 基于SSM茶叶科普管理系统JAVA|VUE|SSM计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解
  • PREDATOR: Registration of 3D Point Clouds with Low Overlap
  • DeepSS2GO——基于 CNN 的模型可以根据化学键预测蛋白质的功能
  • JPA + Thymeleaf 增删改查
  • 【Element-UI】实现el-drawer抽屉的左右拖拽宽度