我有一个标签和一个文本字段,它将显示两个不同的值。
if(a != null && b == null) {
return "a";
}
else if(a == null && b != null) {
return "b";
}
逻辑很简单,但是如何在 xaml 和 mvvm-pattern 中适应呢?我有一个视图模型和一个视图(xaml-ui)。代码应该适当地放置在视图模型中。
你的意思是说....你想在第一个条件下显示a,在第二个条件下显示b??
如果那是真的……
然后 ..
在 ViewModel 中使用属性更改通知创建属性
public void ValidationFunction
{
if(a != null && b == null)
{
TextToDisplay ="a";
}
else if(a == null && b != null)
{
TextToDisplay ="b";
}
else
{
TextToDisplay= string.Empty;
}
}
<TextBlock Text={Binding Path=TextToDisplay}/>
不要忘记在属性的 Setter 中实现 INotifyPropertyChanged。
需要时调用验证函数。
您可以在 A 和 B 上使用MultiBinding ,并在IMultiValueConverter中实现您的逻辑
<TextBlock>
<TextBlock.Text>
<MultiBinding Converter="{StaticResource YourConverter}">
<Binding Path="A"/>
<Binding Path="B"/>
</MultiBinding/>
</TextBlock.Text>
</TextBlock>
代码:
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}/>