2016-08-31 5 views
0

私はすべての種類のタスクを完了しなければならないListViewを持っています。タスクが完了すると、ユーザーはリストビュー内の項目を押します。これは、私のWeb APIのブール値を変更します。今私は私のAPIからすべての項目を取得するときにすでに完了している項目にチェック記号を表示したい。UWPブール値が真の場合にチェック記号を表示します。

<SymbolIcon Grid.Column="0" x:Name="CompleteTask" Symbol="Accept"/> 
<TextBlock Name="TaakNaam" 
    Grid.Column="1" 
    Text="{x:Bind TaskName}" 
    FontSize="16"/> 

What it should be

答えて

0

私はこのコンバータ作成:

public class BooleanToVisibilityConverter : IValueConverter 
{ 
    public BooleanToVisibilityConverter() 
    { 
    } 

    public object Convert(object value, Type targetType, object parameter, string language) 
    { 
     if (value is bool && (bool) value) 
     { 
      return Visibility.Visible; 
     } 
     return Visibility.Collapsed; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, string language) 
    { 
     return (value is Visibility && (Visibility)value == Visibility.Visible); 
    } 
} 

をそして、私の見解では、これをインポート:

<Page.Resources> 
    <vm:BooleanToVisibilityConverter x:Key="BoolToVis" /> 
</Page.Resources> 

を私はSymbolIconへの結合を追加しましたより:

<SymbolIcon Grid.Column="0" x:Name="CompleteTask" Symbol="Accept" Foreground="Green" Visibility="{Binding Path=Check, Converter=StaticResource BoolToVis}}"/> 

出典:https://pmdevweb.wordpress.com/2016/05/24/uwp-binding-boolean-to-visibility/

0

あなたは

public Visibility TickVisibility 
{ 
    get {return YourBoolean == true ? Visibility.Visible : Visibility.Collapsed;} 
} 

プロパティを記述し、それをバインドすることができます

<SymbolIcon Grid.Column="0" x:Name="CompleteTask" Symbol="Accept" Visibility={Binding TickVisibility}/> 

またはYourBooleanが を変更したり、IValueConverterを実装するコンバータを書きましたたびにNotifyProperty使用ブールを変換します< =>可視性

+0

OPは 'x:Bind'を使用しています。代わりに 'Binding'を使用する理由は何ですか? – IInspectable

+0

実際には違いはありません(この場合はありません)。それはx:Bindにchagedすることができますが、私は個人的にはBindingを優先します。なぜなら、NVVMではより適切であり、よく見えるからです。 – RTDev

+0

大きな違いがあります。 1つは、 'x:Bind'と' Binding'を同じ意味で使うことはできません。別の方法では、デフォルトモードが異なります。コンパイル時に 'x:Bind'がチェックされ、コンパイラエラーが発生します(実行時に' Binding'は失敗します)。詳細については、[データバインドの詳細](https://msdn.microsoft.com/windows/uwp/data-binding/data-binding-in-depth)を参照してください。あなたは 'x:Bind'(*個人的な好み*は良い理由ではない)を介して'バインディング 'を選択する**非常に良い**理由を持っていなければなりません。 – IInspectable

関連する問題