У меня есть TextBox в TabControl. Если я отредактирую текст в поле и перейду на другую вкладку, текст будет потерян. Если я изменю фокус (с помощью клавиши TAB на клавиатуре), а затем переключитесь на другую вкладку, новый текст будет установлен в моей модели просмотра.TextBox Binding не работает при переключении Tab в TabControl
Вот мой код:
<Window x:Class="TabSwitchProblem.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<TabControl ItemsSource="{Binding Pages}">
<TabControl.ContentTemplate>
<DataTemplate>
<TextBox Text="{Binding PageContent}" />
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
public partial class MainWindow : Window
{
public ObservableCollection<PageViewModel> Pages
{
get { return (ObservableCollection<PageViewModel>)GetValue(PagesProperty); }
set { SetValue(PagesProperty, value); }
}
public static readonly DependencyProperty PagesProperty =
DependencyProperty.Register("Pages", typeof(ObservableCollection<PageViewModel>), typeof(MainWindow), new PropertyMetadata(null));
public MainWindow()
{
InitializeComponent();
Pages = new ObservableCollection<PageViewModel>();
Pages.Add(new PageViewModel());
Pages.Add(new PageViewModel());
DataContext = this;
}
}
public class PageViewModel : DependencyObject
{
public string PageContent
{
get { return (string)GetValue(PageContentProperty); }
set { SetValue(PageContentProperty, value); }
}
public static readonly DependencyProperty PageContentProperty =
DependencyProperty.Register("PageContent", typeof(string), typeof(PageViewModel), new PropertyMetadata(null));
}
Как я могу быть уверен, чтобы получить текст обновлен в моем ViewModel?
Поймать указатель вкладки изменен и сообщить об их свойствах модели? – grmbl
Я знаю, как поймать событие SelectionChanged. Но что вы имеете в виду, уведомив мою модель? Как я могу получить значение в TextBox и установить его в моей модели? – MTR