将textBlock文本绑定到自定义类xaml c中的值#

时间:2015-08-19 15:37:58

标签: c# xaml

当我导航到应显示文本的新页面时,它显示为空

我有Xaml代码

  xmlns:vm="using:Estimation" 

  <Page.DataContext>
    <vm:PlayerClass/>
  </Page.DataContext>

这是textBlock我试图绑定数据。

  <TextBlock x:Name="PlayerOne"
             Text="{Binding PlayerOneName}" 
               />

Class im绑定如下

 public class PlayerClass :INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    private void NotifyPropertChanged(String info)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(info));
            }

    private string name;
    public string PlayerOneName { get { return this.name; }
                                  set { this.name = value ;
                            NotifyPropertChanged(PlayerOneName); } }

}}

并且改变文本框中内容的类是

        private void StartButton_Click(object sender, RoutedEventArgs e)
    {
             if (PlayerOneTextBox.Text == EnterNameText ||
            PlayerTwoTextBox.Text == EnterNameText ||
                 PlayerThreeTextBox.Text == EnterNameText ||
            PlayerFourTextBox.Text == EnterNameText)
        {
            MessageDialog msgBox = new MessageDialog("Please Enter All Names Before Continuing");
            msgBox.ShowAsync();

        }
        else
        {
            //   playerNames.PropertyChanged += new DependencyPropertyChangedEventHandler(playerNames_PropertyChanged);
           this.DataContex.PlayerOneName = PlayerOneTextBox.Text;
            MessageDialog msgBox = new MessageDialog(playerNames.PlayerOneName);
            msgBox.ShowAsync();


            playerNames.PlayerTwoName = PlayerTwoTextBox.Text;
            playerNames.PlayerThreeName = PlayerTwoTextBox.Text;
            playerNames.PlayerFourName = PlayerFourTextBox.Text;
           Frame.Navigate(typeof(NewRoundPage));
        }
    }

1 个答案:

答案 0 :(得分:0)

在构造函数中设置名称

public PlayerClass ()
{
   PlayerOneName = "Jabba De Hutt";
}

还设置回退值以提供绑定失败情况的指示:

Text="{Binding PlayerOneName, FallBack=Unknown}" 

导航不应更改文本框的datacontext,而是更改viewmodel

 protected override void OnNavigatedTo(NavigationEventArgs e)
 {
      var  PlayerNames = e.Parameter as PlayerClass;

      this.DataContext.PlayerOneName = PlayerNames.PlayerOneName;

   }