马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
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 状态
不做赘述
|