Silverlight 4中的Datagrid

时间:2015-05-18 15:57:21

标签: silverlight silverlight-4.0

我在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。有人能告诉我这里我做错了什么。

由于

2 个答案:

答案 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">