2015-05-18 77 views
1

我有一個像下面的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。有人能告訴我我在這裏做錯了嗎?

謝謝

+0

是你的問題解決了嗎? – Martin

回答

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和上面一樣。

+0

是的,它包括在那裏。 – sid99

+0

這太糟糕了。我過去犯的常見錯誤。檢查我的編輯。該代碼按預期運行。也許你可以看到代碼中發生的任何不匹配。 –

+0

我使用的xmlns是xmlns:data =「clr-namespace:System.Windows.Controls; assembly = System.Windows.Controls.Data」 - 這是在Silverlight 3中工作,但不在Silverlight 4中 – sid99

0

好吧,我想我發現了錯誤:

您錯誤地使用了屬性x:Name而不是x:Key,但你必須設置爲靜態資源x:Key屬性。是的,我已經看到x:Name實際上爲資源工作(似乎Silverlight 3不太嚴格),我認爲你不能爲SL4做到這一點。

<Style TargetType="DataGridColumnHeader" x:Name="MyResource"> 

<Style TargetType="DataGridColumnHeader" x:Key="MyResource">