2017-09-05 7 views
0

私はUWP/XAMLを初めて使用しています。このトピックに関するいくつかの記事は既に見つかりましたが、 Unfortunatelly私はスクリーンショットを投稿することはできませんので、それを説明しようとします。 私はクロックイン/クロックアウトの2つのボタンを持っています。どちらもコマンドオブジェクトにバインドされています。 「ログインした」ワーカーがいない場合は、両方のボタンが無効になります。作業者がいて、クロック入力されていない場合、ClockInButtonは有効になり、ClockOutButtonは無効になり、その逆もあります。これは魅力のように機能します!有効/無効のコマンドボタンを可視/不可視に変換するときの問題

<Button x:Name="ClockInButton" Command="{x:Bind ViewModel.ClockInCommand, Mode=OneWay}" ...></Button> 
<Button x:Name="ClockOutButton" Command="{x:Bind ViewModel.ClockOutCommand, Mode=OneWay}...>"</Button> 

ViewModelを変更すると、CanExecuteChanged-Eventが発生し、ボタンが正しく更新されます。 ボタンを有効/無効にするだけでなく、可視/不可視に設定して、同じ場所に表示することができます(私たちは23インチのデバイスをショップフロアに保有しています)。ボタン

Visibility="{x:Bind ViewModel.IsWorkerClockedIn, Converter={StaticResource VisibilityConverter}, Mode=OneWay}" 

そして、これが私のコンバータコード(ヒントのためのAlexDreneaのおかげで)です。

public class BoolToVisibilityConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, string language) 
    { 
     bool enabled = (bool)value; 

     if (enabled) 
     { 
      return Visibility.Visible; 
     } 
     else 
     { 
      return Visibility.Collapsed; 
     } 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, string language) 
    { 
     throw new NotImplementedException(); 
    } 
} 

これは正しく私はアプリを起動時に動作するワーカー「ログイン中」はありません。ボタンは表示されませんが、ワーカーがログインすると非表示になります:-(すべてのイベントは(今)正しく行われています 私は独自の「コードビハインド」、またはXAMLの要件を満たす方法がありますか?

よろしく、 ニルス

+0

編集: 私はPropertyChanged-Eventを発生させるのを忘れましたが、まだ動作しません。ボタンが有効になる前に可視性が設定されていると思われます。どちらの場合でも、コンバータ内のブール「有効」は「false」です。 – nilsk

+0

'Mode = OneWay'のためですか? – Lindsay

+0

Hmm i "One way"はOKだと思う。モデルはボタンを更新するが、後方は更新しない。 – nilsk

答えて

0

[OK]を私は(少なくとも)盲目でした。ボタンの可視性は両方とも同じプロパティにバインドされているため、常にまたはの両方が表示されます。は表示されません。 正しく実装されていれば、そのアイデアは機能します。不都合なことにご迷惑をおかけして申し訳ありません:-(

関連する問題