2017-09-20 14 views
2

私はxamarinフォームとmvvmパターンを学習しています。私はバインディングブール値を否定することが可能かどうか疑問に思っています。私は何を意味することは次のとおりです。Xamarinフォーム - ブールバインディング値を無効にする

私が持っている、のは、バインディングのisVisibleでエントリを言わせて:

<Entry 
    x:Name="TextEntry" 
    IsVisible="{Binding IsVisibleEntry}" 
/> 

と私はTextEntryが表示されているときに非表示にしたいLabelを。

<Label x:Name="MainLabel" 
     isVisible="!{Binding IsVisibleEntry}"/> //ofc it is not working 

ViewModelでMainLabelの新しい変数を作成せずに行うことはできますか?

答えて

10

あなたのXAMLで

public class InverseBoolConverter : IValueConverter 
{ 
    public object Convert (object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return !(bool)value; 
    } 
    public object ConvertBack (object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return !(bool)value; 
    } 
} 

を 1)使用コンバータ。 2)トリガを使用します。ヘルパー= "CLR名前空間:HikePOS

コンバータ

public class InverseBoolConverter : IValueConverter, IMarkupExtension 
    { 
     public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      return !((bool)value); 
     } 

     public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      return value; 
      //throw new NotImplementedException(); 
     } 


     public object ProvideValue(IServiceProvider serviceProvider) 
     { 
      return this; 
     } 
    } 

<Label x:Name="MainLabel" isVisible="{Binding IsVisibleEntry, Converter={Helpers:InverseBoolConverter}}"/> 

いけないXAML

はあなたのヘッダーに

のxmlnsをこの行を置くのを忘れていました。ヘルパー "

いくつかの場面で

トリガー

<Label x:Name="MainLabel" isVisible="{Binding IsVisibleEntry}"/> 
    <Label.Triggers> 
     <DataTrigger TargetType="Label" Binding="{Binding IsVisibleEntry}" Value="True"> 
      <Setter Property="IsVisible" Value="False" /> 
     </DataTrigger> 
    </Label.Triggers> 
</Label> 
+0

ありがとうございました。 :) –

5

あなたはこのように多少なり結合して反転コンバータ作成する必要があります:あなたはあなたの解決策を得るために2つのオプションがあり

<local:InverseBoolConverter x:Key="inverter"/> 
<Entry 
x:Name="TextEntry" 
IsVisible="{Binding IsVisibleEntry, Converter={StaticResource inverter}}" 
/> 
+0

私はこの作業を取得しようとしているいくつかの時間をくびれている、と私は持っていません。私は常にタイプコア:InverseBoolConverterがxmlns Igs.Mobile.Coreに見つからないか、または名前の物に名前を付けたものと同じです。 – JonathanPeel

関連する問題