我在TabControl中有一個TextBox。如果我編輯框中的文本,然後切換到另一個選項卡,文本將丟失。如果我改變焦點(通過鍵盤上的TAB鍵),然後切換到另一個選項卡,則新文本將設置在我的viewmodel中。在TabControl中切換Tab時TextBox Binding不起作用
這裏是我的代碼:
<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));
}
我怎麼能相信,以獲取文本在我的視圖模型更新?
捕捉已更改的選項卡索引並通知您的模型屬性? – grmbl
我知道,如何捕捉SelectionChanged事件。但是,通知我的模型意味着什麼?我怎樣才能獲得TextBox中的值並將其設置在我的模型中? – MTR