0

я знаю, может быть, это простой вопрос, бушель я не знаю, как это реа:Как я могу связать свойство к TextBox

У меня есть код XAML:

<phone:PhoneApplicationPage.Background> 
     <ImageBrush ImageSource="/conTgo;component/resources/images/bg_settings.png" Stretch="None"/> 
    </phone:PhoneApplicationPage.Background> 
    <TextBlock TextWrapping="Wrap" Text="{Binding VersionNumber}" Foreground="{StaticResource PhoneAccentBrush}" FontFamily="Segoe WP Black" FontSize="26.667" TextAlignment="Center" LineHeight="16"/> 
</phone:PhoneApplicationPage> 

В моем коде позади у меня есть:

public string VersionNumber { get; set; } 

Как я могу это понять?

+0

Хотя вариант, описанный в нижеприведенном ответе, работает, он может иметь проблемы с долговременной ремонтопригодностью. Я рекомендую вам немного прочитать о шаблоне MVVM и о том, как подать заявку на Windows Phone: http://www.bing.com/search?q=MVVM+Windows+Phone – Murven

ответ

1

Шаблон MVVM настоятельно рекомендуется для разработки Silverlight и хорошо подходит для таких случаев, а также для более эффективного определения кода для модульного тестирования.

Однако, если ваша собственность связана с тем, что ваша привязка остается прямо в вашем элементе управления, и вы хотите сохранить ее там, ваш элемент управления должен будет реализовать INotifyPropertyChanged, чтобы свойство могло подключиться к уведомлению об изменении Silverlight (или WPF):

public class YourControl : Control, INotifyPropertyChanged 
{ 

    public string VersionNumber { 
     get { return versionNumber; } 
     set { 
      versionNumber = value; 
      NotifyPropertyChanged("VersionNumber"); 
     }   
    } 
    private string versionNumber; 

    public event PropertyChangedEventHandler PropertyChanged; 

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

Опять же, я определенно рекомендовал бы подход MVVM.

+0

Хотя это и делает работу, я не думаю что реализация INotifyPropertyChanged в контроле и настройке себя, поскольку контекст данных является хорошей идеей. Механизм связывания шаблонов предназначен для структуры шаблона управления для привязки свойств к своим собственным значениям свойств управления. INotifyPropertyChanged и DataContext предназначены для экспорта внешних данных в представление. Это рекомендует использовать неправильный инструмент для работы. – Murven

+0

Я получаю это Murven, и я подключаю MVVM, когда это возможно. Чтобы узнать абсолютные основы и посмотреть процесс уведомления об изменениях, работающий в этом конкретном примере, мой ответ уместен. – KodeKreachor

+0

Хорошо, это круто. Я просто думаю, что важно написать это явно, чтобы и человек, задающий вопрос, и другие люди, которые искали сайт, не думали, что это единственный ответ на этот вопрос. – Murven

1

Связывание ищет свойство в вашем файле данных. Поэтому, если вы добавили свойство на свою страницу, вы должны установить свою страницу как собственный datacontext.

В конструкторе вашей страницы, после вызова "InitializeComponent()", добавьте:

this.DataContext = this; 

Это должно сделать трюк.

Этот метод подходит для небольших приложений. Если вы хотите создать более крупное и структурированное приложение, вам может понадобиться узнать о шаблоне MVVM.

Смежные вопросы