的Datagrid在Silverlight 4
问题描述:
我有一个像下面的Datagrid在Silverlight 4
<data:DataGrid x:Name="Test">
<data:dataGrid.Columns>
<data:DataGridColumnTextColumn Header="File Name" HeaderStyle="{StaticResource MyResource}"/>
</data:DataGrid.Columns>
</data:DataGrid>
这里的资源文件属性
<Style TargetType ="System_Windows_Controls_Primitives:DataGridColumnHeader" x:Name="MyResource">
<Setter Property="Foreground" Value="#FF"/>
</style>
我使用xmlns是xmlns:data = "clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"
在Silverlight 4 DataGrid中 - 这是在Silverlight 3中,但不工作在Silverlight 4中
问题是程序抛出一个错误,即给定的键在字典中不存在,因为它存在于资源中ource文件。它可以清楚地获得其他属性的其他键,如标题名称等,但不是HeaderStyle。有人能告诉我我在这里做错了吗?
谢谢
答
简单地创建一个字典并不会让你的应用程序并入它。你有没有在你的App.xaml中引用它?
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SilverlightApplication5.App">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Dictionary1.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
[编辑] 我不知道呢。命名空间是否正确?
下面的例子对我的作品(注名字空间的名字从你的例子不同):
MainPage.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:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"
x:Class="SilverlightApplication5.MainPage"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot" Background="White">
<sdk:DataGrid HorizontalAlignment="Left" Height="100" Margin="120,126,0,0" VerticalAlignment="Top" Width="120">
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn Header="File Name" HeaderStyle="{StaticResource MyResource}" />
</sdk:DataGrid.Columns>
</sdk:DataGrid>
</Grid>
Dictionary1.xaml:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk">
<Style TargetType="sdk:DataGridColumnHeader" x:Name="MyResource">
<Setter Property="Foreground" Value="#FFFFFFFF"/>
</Style>
App.xaml和上面一样。
答
好吧,我想我发现了错误:
您错误地使用了属性x:Name
而不是x:Key
,但你必须设置为静态资源x:Key
属性。是的,我已经看到x:Name
实际上为资源工作(似乎Silverlight 3不太严格),我认为你不能为SL4做到这一点。
<Style TargetType="DataGridColumnHeader" x:Name="MyResource">
与
<Style TargetType="DataGridColumnHeader" x:Key="MyResource">
是你的问题解决了吗? – Martin