0

wp7 での双方向バインディングは初めてです。以下のコードは、テキスト ボックスの値をオブジェクトに自動的に割り当てず、null を返します。

Xaml:

 <Grid x:Name="ContentPanel" DataContext="{Binding usd}" Grid.Row="1" Margin="14,10,10,-10" > 
        <TextBox Text="{Binding UserName,Mode=TwoWay}" Name="txt1" Width="200" Height="60" FontSize="20" Margin="128,48,128,499"/>
        <TextBox Text="{Binding Password,Mode=TwoWay}" Name="txt2" Width="200" Height="60" FontSize="20" Margin="128,263,128,284"/>
        <TextBox Text="{Binding Email,Mode=TwoWay}" Name="txt3" Width="200" Height="60" FontSize="20" Margin="128,159,128,388"/>
        <Button Content="Send" FontSize="18" Margin="179,413,170,129" 
        Click="Button_Click_1" />
  </Grid>

シーズ:

public class UserLogin:INotifyPropertyChanged
    {
        private string _username;
        private string _pwd;
        private string _email;

        public string UserName
        {
            get
            {
                return _username;
            }
            set
            {
                _username = value;
                OnPropertyChanged("UserName");
            }
        }
        public string Password
        {
            get
            {
                return _pwd;
            }
            set
            {
                _pwd = value;
                OnPropertyChanged("Password");
            }
        }
        public string Email
        {
            get
            {
                return _email;
            }
            set
            {
                _email = value;
                OnPropertyChanged("Email");
            }
        }
        public event PropertyChangedEventHandler PropertyChanged;
        protected void OnPropertyChanged(string name)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null)
            {
                handler(this, new PropertyChangedEventArgs(name));
            }
        }
    }

インスタンス化:

public UserLogin usd = null;

コンストラクターで:

usd = new UserLogin();

ボタン ClickEvent 内:

    private void Button_Click_1(object sender, RoutedEventArgs e)
        {

//            ContentPanel.DataContext = usd;

            MessageBox.Show(usd.Email);
        }

メッセージ ボックス ステートメントにヌル参照例外があります。ありがとう..

4

3 に答える 3

0

コントロール/ページについて (どの XAML がそれに属しているか)

  1. datacontext にはusdプロパティが含まれている必要があります
  2. そのプロパティはプロパティにも通知する必要があります!
  3. もちろん、コントロール/ページの datacontext クラスもINotifyPropertyChangedを実装する必要があります
于 2013-06-24T11:38:26.993 に答える
0

あなたの米ドルは単なる変数としてプロパティとして設定されていないため.... 1つのことをしてください

public UserLogin usd {get;set;} 
usd = null;
于 2013-06-24T11:52:31.340 に答える