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 状态
不做赘述
原文地址:https://blog.csdn.net/m0_51005282/article/details/142525039
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!