0

ラベルとテキストフィールドがあり、2 つの異なる値が表示されます。

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 を表示し、2 番目の条件に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 に答える