我在silverlight 4中有一个datagrid,如下所示
<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 3中有效但在Silverlight 4中没有用
问题是该程序抛出了一个错误,即字典中没有给定的键,因为它在资源文件中,所以不是真的。它可以清楚地获得其他属性的其他键,如标题名称等,但不是HeaderStyle。有人能告诉我这里我做错了什么。
由于
答案 0 :(得分:0)
简单地创建字典不会使您的应用程序合并它。你有没有在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完全如上所述。
答案 1 :(得分:0)
好的,我想我发现了错误:
您错误地使用了属性x:Name
而非x:Key
,但您必须为静态资源设置x:Key
属性。是的,我之前看到x:Name
实际上正在为资源工作(似乎Silverlight 3对此并不过分严格),我认为你不能再为SL4做这件事了。
<Style TargetType="DataGridColumnHeader" x:Name="MyResource">
与
<Style TargetType="DataGridColumnHeader" x:Key="MyResource">