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

[复制链接]
发表于 2026-1-16 22:06:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

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

  条件,这里根据 Image 控件 Source 属性为 null 时,让 Label 控件可见,不为 null 时, Label 控件不可见为例子展示,代码如下:
  1. <Canvas>
  2.    <Image Width="100" Height="100" Source="{Binding LeftMatL}" Stretch="Fill"></Image>
  3.    <Label Visibility="Visible" Width="100" Height="100" Content="待检测"></Label>
  4. </Canvas>
复制代码

方法一:控件切换位置

  让 Image 控件和 Label 控件在 xaml 中交换,如许当 Image 有图片时就会将 Label 控件给覆盖,从而到达让 Label 控件不可见的结果。
  1. <Canvas>
  2.         <Label Visibility="Visible" Width="100" Height="100" Content="待检测"></Label>
  3.     <Image Width="100" Height="100" Source="{Binding LeftMatL}" Stretch="Fill"></Image>
  4. </Canvas>
复制代码

  但是如果图片是透明的,用这种方法就不可
方法二:根据触发来修改状态

  使用 DataTrigger,根据值的变动时,来触发对应的使用,从而到达对应的结果。
  1. <Canvas>
  2.         <Image x:Name="img" Width="100" Height="100" Source="{Binding LeftMatL}" Stretch="Fill"></Image>
  3.         <Label Name="label" Visibility="Visible" Width="100" Height="100" Content="待检测">
  4.             <Label.Template>
  5.                 <!--重写 label 控件-->
  6.                 <ControlTemplate TargetType="Label" >
  7.                     <!--起名为 tb, 并且让其默认不可见,然后设置触发器让其满足 Image 控件某个效果时,才让其可见-->
  8.                     <TextBlock x:Name="tb" Text="{TemplateBinding Content}" Visibility="Collapsed" Foreground="Red" />
  9.                     <ControlTemplate.Triggers>
  10.                         <!--使用 DataTrigger 当 Image 控件某个书信给的值变化时或达到某种结果时,触发-->
  11.                         <DataTrigger Binding="{Binding ElementName=img,Path=Source}" Value="{x:Null}" >
  12.                             <!--指定修改 tb 的可见状态-->
  13.                             <Setter Property="Visibility" TargetName="tb" Value="Visible" />
  14.                         </DataTrigger>
  15.                     </ControlTemplate.Triggers>
  16.                 </ControlTemplate>
  17.             </Label.Template>
  18.         </Label>
  19. </Canvas>
复制代码
  Image 控件有图时

  Image 控件无图时

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

  不做赘述
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表