DataTrigger使用if Else语句

Yonglun Liu (Shanghai Wicresoft Co,.Ltd.) 43,926 信誉分 Microsoft 供应商
2024-05-08T05:27:04.36+00:00

你好,

 

我有一个图像,我想根据标签来显示和隐藏它:

    <Image.Triggers>
    <DataTrigger TargetType="Image" Binding="{Binding Source={x:Reference LabelNickname}, Path=Text}" Value="Add">
        <Setter Property="IsVisible" Value="True" />
    </DataTrigger>
    <DataTrigger TargetType="Image" Binding="{Binding Source={x:Reference LabelNickname}, Path=Text}" Value="Add">
        <Setter Property="IsVisible" Value="False" />
    </DataTrigger>
</Image.Triggers>

如果 LabelNickname 的文本被添加,则显示图像,否则隐藏图像。

 

请问我怎样才能实现这个目标?

 

谢谢,

此问题整理于:DataTrigger if Else case - Microsoft Q&A

.NET MAUI
.NET MAUI
一种 Microsoft 开源框架,用于构建跨移动设备、平板电脑、台式机的原生设备应用程序。
87 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. Wenyan Zhang (Shanghai Wicresoft Co,.Ltd.) 32,306 信誉分 Microsoft 供应商
    2024-05-08T05:31:38.2666667+00:00

    您好

    您提供的代码是正确的,可以触发。我知道你想简化 XAML 中的触发方法,但我不得不说,这不能用触发器来实现。因为 XAML 不能包含条件处理。请参阅 XAML - .NET MAUI | Microsoft Learn

    不过,数据绑定可以引用基于代码的绑定转换器,它可以有效地进行一些条件处理。

    您可以尝试绑定值转换器,并参考以下代码:

    Converter 类

    public class IsValiableBoolConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return (string)value == "Add";
        }
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return (bool)value ? 1 : 0;
        }
    }
    

    XMAL

        <ContentPage.Resources>
            <local:IsValiableBoolConverter x:Key="IsValiableBool" />
        </ContentPage.Resources>
    
    <Image...
                  
                    IsVisible="{Binding Source={x:Reference LabelNickname},
                                        Path=Text,
                                        Converter={StaticResource IsValiableBool}}">
    
                    <!-- romve Triggers
    <Image.Triggers>
                        <DataTrigger TargetType="Image" Binding="{Binding Source={x:Reference LabelNickname}, Path=Text}" Value="Add">
                            <Setter Property="IsVisible" Value="True" />
                        </DataTrigger>
                        <DataTrigger TargetType="Image" Binding="{Binding Source={x:Reference LabelNickname}, Path=Text}" Value="Add">
                            <Setter Property="IsVisible" Value="False" />
                        </DataTrigger>
                    </Image.Triggers>
    -->
    </Image>
    

    如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。 注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。