自学内容网 自学内容网

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)!