【发布时间】:2010-10-31 03:03:31
【问题描述】:
假设我有 XAML 之类的
<TabControl Grid.Row="1" Grid.Column="2" ItemsSource="{Binding Tabs}" IsSynchronizedWithCurrentItem="True">
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding TabTitle}" />
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate>
<local:UserControl1 Text="{Binding Text}" />
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
我想问TabTitle 和Text 属性是从哪里来的?我认为应该来自Tabs 的每一项,对吗?说 Tabs 是 ObservableCollection<TabViewModel> TabTitle 和 Text 应该来自 TabViewModel 属性吧。但这在一定程度上似乎是正确的。 TabTitle 已正确填充,而 Text 未正确填充。
Text 在UserControl1 中声明为依赖属性,如下所示
public string Text
{
get { return (string)GetValue(TextProperty); }
set { SetValue(TextProperty, value); }
}
public static readonly DependencyProperty TextProperty =
DependencyProperty.Register("Text", typeof(string), typeof(UserControl1), new UIPropertyMetadata(""));
当我的标签未绑定到 ObservableCollection<TabViewModel> 时,绑定工作正常
<TabControl Grid.Row="1" Grid.Column="1">
<TabItem Header="Tab 1">
<local:UserControl1 Text="Hello" />
</TabItem>
<TabItem Header="Tab 2">
<local:UserControl1 Text="World" />
</TabItem>
</TabControl>
【问题讨论】:
-
检查输出窗口是否存在绑定错误
-
你用一些值初始化 TabViewModel.Text 吗?或者它是空的?另外,您的 TabViewModel 是否实现了 INotifyPropertyChanged 接口?
标签: wpf data-binding xaml dependency-properties