私は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の要件を満たす方法がありますか?
よろしく、 ニルス
編集: 私はPropertyChanged-Eventを発生させるのを忘れましたが、まだ動作しません。ボタンが有効になる前に可視性が設定されていると思われます。どちらの場合でも、コンバータ内のブール「有効」は「false」です。 – nilsk
'Mode = OneWay'のためですか? – Lindsay
Hmm i "One way"はOKだと思う。モデルはボタンを更新するが、後方は更新しない。 – nilsk