轉(zhuǎn)帖|其它|編輯:郝浩|2011-08-30 15:06:43.000|閱讀 1045 次
概述:本文主要介紹如何在Silverlight中為DataGrid控件定制標(biāo)題行樣式實(shí)現(xiàn)多行文本,希望對大家有幫助。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
項(xiàng)目中經(jīng)常會用到DataGrid這個控件,而且有時候會需要在這個控件的標(biāo)題行中顯示多行文本。例如下面這樣
如何實(shí)現(xiàn)這樣的功能呢?答案是,通過定制HeaderStyle。我經(jīng)常感慨說,在WPF和Silverlight開發(fā)里面,DataBinding和Style,以及Template的機(jī)制實(shí)在是很厲害,很好用。大家看看下面的例子 吧
<sdk:DataGrid>
<sdk:DataGrid.ColumnHeaderStyle>
<Style
TargetType="sdk:DataGridColumnHeader">
<Setter
Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<ContentControl
Content="{Binding Converter={StaticResource hv}}"></ContentControl>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</sdk:DataGrid.ColumnHeaderStyle>
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn
Header="Item,項(xiàng)目"></sdk:DataGridTextColumn>
<sdk:DataGridTextColumn
Header="Department,部門"></sdk:DataGridTextColumn>
<sdk:DataGridTextColumn
Header="Company,公司"></sdk:DataGridTextColumn>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
注意,我們這里定義了一個特殊的Style,設(shè)置了ColumnHeader的ContentTemplate。由于用戶一般在設(shè)置列的標(biāo)題的時候,是輸入一個字符串。我們規(guī)定,如果要分多行顯示的話,用逗號分開即可。
那么,如何將這個帶有逗號的字符串轉(zhuǎn)換為我們想要的標(biāo)題呢?答案是,使用轉(zhuǎn)換器。
using System;
using System.Windows.Controls;
using System.Windows.Data;
namespace TechnologySample
{
public class HeaderConverter:IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var text = value.ToString();
var panel = new StackPanel();
Array.ForEach(text.Split(','), s => panel.Children.Add(new TextBlock() { Text = s }));
return panel;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
}
這個代碼很好懂,根據(jù)傳入的一個字符串,我們動態(tài)構(gòu)造了一個StackPanel,并且插入了多個TextBlock
要在界面中使用這個轉(zhuǎn)換器,只需要將它定義為資源即可
<UserControl.Resources>
<ctrl:HeaderConverter
x:Key="hv"></ctrl:HeaderConverter>
</UserControl.Resources>
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:博客園