0

我有一个标签和一个文本字段,它将显示两个不同的值。

if(a != null && b == null) {
   return "a"; 
}
else if(a == null && b != null) {
   return "b"; 
}

逻辑很简单,但是如何在 xaml 和 mvvm-pattern 中适应呢?我有一个视图模型和一个视图(xaml-ui)。代码应该适当地放置在视图模型中。

4

3 回答 3

2

你的意思是说....你想在第一个条件下显示a,在第二个条件下显示b??

如果那是真的……

然后 ..

在 ViewModel 中使用属性更改通知创建属性

ViewModel 中的代码

public void ValidationFunction
{
    if(a != null && b == null) 
    {
          TextToDisplay ="a";
    }
    else if(a == null && b != null) 
    {
          TextToDisplay ="b";
    }
    else
    {
          TextToDisplay= string.Empty;
    } 
}

XAML 中的绑定

<TextBlock Text={Binding Path=TextToDisplay}/> 

不要忘记在属性的 Setter 中实现 INotifyPropertyChanged。

需要时调用验证函数。

于 2012-04-13T07:38:26.990 回答
1

您可以在 A 和 B 上使用MultiBinding ,并在IMultiValueConverter中实现您的逻辑

<TextBlock>
  <TextBlock.Text>
    <MultiBinding Converter="{StaticResource YourConverter}">
      <Binding Path="A"/>
      <Binding Path="B"/>
    </MultiBinding/>
  </TextBlock.Text>
</TextBlock>
于 2012-04-13T07:32:14.197 回答
0

代码:

class MyViewModel {
    string ResultStr {
        get {
            if (a != null && b == null)
                return "a"; 
            else if (a == null && b != null)
                return "b"; 
        }
    }
}  

XAML:

<TextBlock Text={Binding Path=ResultStr Mode=OneWay}/>
于 2012-04-13T07:31:10.133 回答