1

Caliburn.Microを使用してWP 7.1でアプリのプログラミングを開始しました。私の最初のビューは、ログインとパスのテキストボックスとログインアクションのボタンを備えたロギングウィンドウです。ここで、進行状況バーを不確定として上部に表示し、テキストボックスを読み取り専用にします。私はウェブで検索してきましたが、満足のいく解決策しか見つかりませんでした。私は次のような解決策を考えています:

  1. "ControlNameIsReadOnly" "ControlNameIsEnabled" のような規則に従ってプロパティをバインドするように既定のバインダーを変更します。
  2. プログレスバーのみが表示されたダイアログボックスとして画面を作成

誰もこれを解決しましたか?これらの解決策はどれも私を満足させていません。

4

1 に答える 1

0

いくつかの方法があります-あなたがそれをコンベンションベースでコントロールごとにやりたいかどうかに依存します

慣例がなければ、忙しいプロパティを使用できます。

class SomeViewModel : Screen // or whatever
{
    public bool IsBusy 
    {
        get { // getter code 
        } 
        set { // setter code, calling notifypropertychanged 
        }

}

その後、あなたのコントロールで

<UserControl>
    <Grid>
        <TextBox>Hello World</TextBox>
        <Border Background="#AAFFFFFF"> <!-- Semitransparent overlay -->
            <ProgressBar IsIndeterminate="true" Visibility="{Binding IsBusy, Converter={StaticResource BooleanToVisibilityConverter}" />
        </Border>
    </Grid>
</UserControl>

コンバーターは次のようになります。

class BooleanToVisibilityConverter : IValueConverter
{
    public void Convert(object value, blah blah blah...)
    {
        if(value is bool)
        {
            if((bool)value) return Visibility.Visible;

            return Visibility.Collapsed;
        }

        return null;
    }
}

このようにして、コントロールで何かが起こっているときにプログレスバーをオーバーレイして、ユーザーが操作できないようにすることができます。

私はそのどれもテストしていないので、あなたは最高のフィット感のために微調整する必要があるかもしれません:P

IsReadOnlyテキストボックスをプロパティにバインドすることもできIsBusyます。これはもちろん、これを従来とは異なる方法で実行してもかまわず、すべてWindowsPhone7で機能することを前提としています:)

于 2012-11-29T22:00:05.963 に答える