微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Silverlight中的TabControl如何绑定数据

在 WPF 中,TabControl 可以直接将 ItemsSource 绑定数据源

将 TabControl 绑定到数据的示例

http://msdn.microsoft.com/zh-cn/library/aa972130(VS.90).aspx

 

复制代码

  
  
< Window.Resources >
ObjectDataProvider x:Key ="TabListResource" ObjectType =" {x:Type src:TabList} " /> DataTemplate ="HeaderTemplate" TextBlock Text {Binding Path=Header} </ DataTemplate ="ContentTemplate" {Binding Path=Content} DockPanel TabControl ItemsSource {Binding Source={StaticResource TabListResource}}
ItemTemplate
{StaticResource HeaderTemplate}
ContentTemplate
{StaticResource ContentTemplate} " >

复制代码

 

匪疑所思的是,TabControl.ItemTeplate 居然是用于 Header, ContentTemplate 才是用于 TabItem。

但是在 Silverlight 中貌似无此功能, TabControl.ContentTemplate  属性也不存在。

作为从 ItemsControl 中派生的类,Silverlight 中的 TabControl.ItemsSource 貌似要求为IEnumerable<TabItem>,

这让人很难接受, 不知是不是真的这样?

作为无奈的解决办法,只能对通过代码动态添加各个 TabItem,并对它们分别进行 Binding。

下面是代码

namespace TabControl_DataBinding
{
using Sy
stem;
System.ComponentModel;
System.Collections.ObjectModel;
System.ComponentModel.DataAnnotations;

public class Model
{
ObservableCollection < Article > Articles { get ; private set ; }
Model()
{
this .Articles = new ();
}
}
Article
{
string LanguageCode { LanguageName { ; }
[display(Name
= " 主题 " )]
Subject { ; }
[display(Name
详细描述 Description { ; }
}

Settings
{
static System.Collections.Generic.Dictionary ,
Languages {
Settings()
{
Languages
();
Languages.Add(
en English );
Languages.Add(
zh-Hans 简体 zh-Hant 繁体 );
}
}
}

UserControl.Resources ="languageDataTemplate" Grid Grid.ColumnDeFinitions ColumnDeFinition Width ="Auto" Grid.RowDeFinitions RowDeFinition Height ="*" sdk:Label Grid.Column ="0" Grid.Row
Target
{Binding ElementName=txtSubject} TextBox ="1" Name ="txtSubject"
Text
{Binding Subject,Mode=TwoWay,
ValidatesOnExceptions=true,NotifyOnValidationError=true}
{Binding ElementName=txtDetail} ="txtDetail" Width ="280" {Binding Description,0)">
Height
="80" AcceptsReturn ="True" textwrapping ="Wrap"
VerticalScrollBarVisibility
Grid Grid x:Name ="LayoutRoot" Background ="White" sdk:TabControl Name ="tabControl1" Margin ="16" sdk:TabControl

复制代码

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐