範例示範使用RowDetailTemplate
圖
13.1-6
是
Ch13_Exam1_4
的運行畫面,單擊某一行後,出現詳細信息。
圖
13.1-6
◎
XAML
標記以下,已添加註解。
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
<!--增長的命名空間支持 -->
xmlns:myheader="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Data"
mc:Ignorable="d"
xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"
x:Class="SilverlightApplication74.MainPage"
d:DesignWidth="640" d:DesignHeight="580"
xmlns:local="clr-namespace:SilverlightApplication74">
<Grid x:Name="LayoutRoot">
<StackPanel Margin="10,0,8,18">
<TextBlock Height="51" Margin="179,0,299,0" Text="熱門新車銷量表" TextWrapping="Wrap" FontSize="32" Foreground="#FFE90D0D"/>
// 設置RowDetailsVisibilityMode屬性
<data:DataGrid x:Name="gridStudent" Margin="10,10,0,0" AutoGenerateColumns="False" Width="604" Height="488" HorizontalAlignment="Left" RowDetailsVisibilityMode="VisibleWhenSelected" >
//定義詳細數據區域
<data:DataGrid.RowDetailsTemplate>
<DataTemplate>
<Border>
<Border Margin="10" Padding="10" BorderBrush="SteelBlue" BorderThickness="4" CornerRadius="4">
<TextBlock Text="{Binding Description}" TextWrapping="Wrap" FontSize="14"></TextBlock>
</Border>
</Border>
</DataTemplate>
</data:DataGrid.RowDetailsTemplate>
// 定義ColumnHeaderStyle列標題樣式
<data:DataGrid.ColumnHeaderStyle>
<Style TargetType="myheader:DataGridColumnHeader">
<Setter Property="FontSize" Value="18" />
<Setter Property="Foreground" Value="Red" />
</Style>
</data:DataGrid.ColumnHeaderStyle>
<data:DataGrid.Columns >
<data:DataGridTextColumn Header="車名"
FontSize="16"
Width="100"
Binding="{Binding Name}" >
</data:DataGridTextColumn>
<data:DataGridTextColumn Header="類型"
FontSize="16"
Width="100"
Binding="{Binding Type}" >
</data:DataGridTextColumn>
<data:DataGridTextColumn Header="銷量"
FontSize="16"
Width="150"
Binding="{Binding Total,Mode=TwoWay}">
<data:DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="TextWrapping" Value="Wrap" />
</Style>
</data:DataGridTextColumn.ElementStyle>
<data:DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="Foreground" Value="Red" />
</Style>
</data:DataGridTextColumn.EditingElementStyle>
</data:DataGridTextColumn>
<data:DataGridTemplateColumn Header="圖片" >
<data:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Stretch="UniformToFill" Source ="{Binding Img}" Width="150"/>
</DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>
<data:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding Car, Mode=TwoWay}" />
</DataTemplate>
</data:DataGridTemplateColumn.CellEditingTemplate>
</data:DataGridTemplateColumn>
</data:DataGrid.Columns>
</data:DataGrid>
</StackPanel>
</Grid>
</UserControl>
◎
主要代碼以下:
public void LoadData()
{
car = new Car[] {
new Car{
Name="新明銳",
Total =8500,
Type="小型車",
Img=GetPath("CarPhoto/mingru.jpg"),
Description="斯柯達品牌秉承德國大衆集團的先進技術,其產品特色是智慧和品質…………….",
},
new Car{
Name="高爾夫6",
Total =15500,
Type="豪華車",
Img=GetPath("CarPhoto/golf.jpg"),
Description="高爾夫不只追求外觀和實用性完美結合,並且在產品品質、內飾及溫馨性裝備上也絕不妥協地追求完美…………….."
},
new Car{
Name="科魯茲",
Total =11000,
Type="中型車",
Img=GetPath("CarPhoto/kouluz.jpg"),
Description="科魯茲的外形給人一種鋒利運動的感受,尤爲是銳角的前大燈更強化了……………."
},
new Car{
Name="福克斯兩廂",
Total =12800,
Type="緊湊型車",
Img=GetPath("CarPhoto/fukes.jpg"),
Description="福克斯兩廂車頭採用的X焦點設計,正是福特汽車車頭設計的進化成果……………."
},
new Car{
Name="速騰1.4T",Total =10600,
Type="中型車",
Img=GetPath("CarPhoto/suteng.jpg"),
Description="速騰是一汽大衆於2006年4月9日投放中國市場的一款新車型,其英文名稱爲…………….",
}
};
}
//讀取圖片的絕對路徑
string GetPath(string path)
{
string Uri;
string absoUri= System.Windows.Application.Current.Host.Source.AbsoluteUri;
if (absoUri.IndexOf("ClientBin") > 0)
Uri=absoUri.Substring(0, absoUri.IndexOf("ClientBin")) + path;
else
Uri=absoUri.Substring(0, absoUri.LastIndexOf("/") + 1) + path;
return Uri;
}
}
//定義汽車類
public class Car
{
public string Name
{ set;get;}
public int Total
{ set;get;}
public string Type
{ set;get; }
public string Description
{ set;get; }
public string Img
{ set;get;}
}
更詳細內容及源代碼下載:
http://www.amazon.cn/mn/detailApp/ref=sr_1_1?_encoding=UTF8&s=books&qid=1287058088&asin=B0043RT7I2&sr=8-1