9

TextBoxes Text を XAML のクラスのグローバル変数にバインドするにはどうすればよいですか? ちなみにこれはWindows Phone用です。

コードは次のとおりです。

    namespace Class
    {
    public partial class Login : PhoneApplicationPage
    {
        public static bool is_verifying = false;

        public Login()
        {
            InitializeComponent();        
        }


        private void login_button_Click(object sender, RoutedEventArgs e)
        {
            //navigate to main page
            NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.RelativeOrAbsolute));
        }

        private void show_help(object sender, EventArgs e)
        {
            is_verifying = true;
        }
      }

    }

そして、テキストボックスのテキストを「is_verifying」にバインドしたいと思います。

ありがとう。

4

2 に答える 2

16

まず、プロパティにバインドすることしかできないため、ゲッターとセッターを追加する必要があります。

public static bool is_verifying { get; set; }

次にDataContext、フォームのをここでクラスに設定し、次のように簡単にバインドできます。

"{Binding is_verifying}"

または、フォームのリソースにクラスへの参照を作成し、次のように参照します。

<Window.Resources>
    <local:Login x:Key="LoginForm"/>
</Window.Resources>
...

<TextBox Text="{Binding Source={StaticResource LoginForm}, Path=is_verifying}"/>
于 2012-11-21T14:09:28.783 に答える
4

フィールドにバインドすることはできません。フィールドをプロパティにする必要があります。それでも、何らかの通知メカニズムを実装しない限り、変更は通知されません。これは、実装INotifyPropertyChangedまたは作成などによって実現できます。プロパティa DependencyProperty

プロパティがある場合、通常はx:Staticマークアップ拡張機能を使用してプロパティにバインドできます。

ただし、静的プロパティへのバインドにはいくつかのトリックが必要です。これは、クラスのダミーインスタンスを作成するか、シングルトンにする必要があるため、この場合は機能しない可能性があります。また、少なくともWindowsPhone7ではx:Static利用できないと思います。したがって、プロパティをインスタンスプロパティにすることを検討することをお勧めします。おそらく、別のViewModelで、これをとして設定できますDataContext

于 2012-11-21T14:09:24.913 に答える