.net maui 中如何根据条件进行绑定?

问题描述 投票:0回答:2

我想问一下如何在.net Maui 应用程序中进行条件绑定。例如

如果我有课的话

public class ClassA
{
     public string Property1{get;set;}
     public string Property2{get;set;}
}

而且我无权访问类实现,因此无法添加方法

在我看来,如果某个条件为 true,我想绑定到 Property1,如果该条件为 false,我想绑定到 Property2。

有没有一种方法可以在不更改 ClassA 实现的情况下从视图本身进行条件绑定?

mvvm data-binding maui community-toolkit-mvvm
2个回答
3
投票

我认为您可以通过在代码隐藏(

xaml.cs
文件)而不是
.xaml
文件中设置绑定属性来实现此目标。

例如:

  • MainPage.xaml
    中,您有一个名为
    labelA
    :
  • 的标签
  <Label x:Name="labelA" />
  • MainPage.xaml.cs
    构造函数中,您可以根据条件将
    Text
    labelA
    属性绑定到
    viewModel
    属性之一。
public MainPage(ClassA viewModel)
{
    InitializeComponent();
    BindingContext = viewModel;

    if (true condition)
    {
        labelA.SetBinding(Label.TextProperty, nameof(viewModel.Property1));
    }
    else
    {
        labelA.SetBinding(Label.TextProperty, nameof(viewModel.Property2));
    }
}

0
投票

我的回答对于这个问题可能太晚了,但我看到很多人仍然遇到这个常见问题,你可以用数据触发器来做到这一点

 <Label>
     <Label.Triggers>
         <DataTrigger TargetType="Label" Binding="{Binding BoolCondition}" Value="true">
             <Setter Property="Text" Value="Orange" />
         </DataTrigger>

         <DataTrigger TargetType="Label" Binding="{Binding BoolCondition}" Value="false">
             <Setter Property="Text" Value="Red" />
         </DataTrigger>
     </Label.Triggers>
 </Label>
© www.soinside.com 2019 - 2024. All rights reserved.