Обновление магазина TextBlock и текстовое поле с привязкой к данным через строку
Всем привет, я пытаюсь привязать строку к textblock и textbox в UWP. То, чего я пытаюсь достичь, - это просто обновить текстовый блок и текстовое поле при нажатии кнопки. Пока что начальная привязка работает отлично, выполнение ICommand также в порядке, строка изменилась при нажатии кнопки. Однако обновленная строка не обновляется в текстовом блоке и текстовом поле. код выглядит следующим образом:
Файл MainPage.язык XAML
<StackPanel> <TextBlock text="{x:bind vm.TestString, Mode=OneWay}"/> <TextBox text="{Binding TestString, Mode=TwoWay, UpdateSourceTrigger=OnPropertyChanged}" /> <Button Content="Press Me" ICommand="{Binding Cmd}"/> </StackPanel>
Файл MainPage.язык XAML.в CS
ViewModel vm = new ViewModel(); public MainPage() { this.DataContext = vm; this.InitializeComponent(); }
RelayCommand. cs
public event EventHandler CanExecuteChanged; private readonly Action execute; private readonly Predicate<object> canExecute; public bool CanExecute(object parameter) { return canExecute == null ? true : canExecute(parameter); } public void Execute(object parameter) { this.execute(); } public RelayCommand(Action exec, Predicate<object> canExec) { execute = exec; canExecute = canExec; }
Viewmodel. cs наследуется от INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged(string PropertyName) { PropetyChangedEventHandler hndl = this.PropertyChanged; if (hndl == null) { var e = new PropertyChangedEventArgs(PropertyName); hndl(this,e); } } private string testString; public string TestString { get {return testString;} set { testString= value; OnPropertyChanged("TestString"); } } public ViewModel() { testString = "This is the original text"; } public ICommand Cmd { get { return new RelayCommand(() => this.ChangeString(), param => true);} } private void ChangeString() { testString = "String is Changed"; }
Что я уже пробовал:
Я читал, что в отличие от WPF, textblock в UWP по умолчанию привязан к одному времени. Я попытался изменить его на односторонний, а также двусторонний, но текстовый блок и текстовое поле по-прежнему не обновлялись. Я также попытался установить триггер источника обновления в положение on property changed, но все равно не пошел