2012-11-03 58 views
0

我在WPF用戶控件大會中創建了一個ResourceDictionary。我希望能夠在這個UserControl中使用此功能,並且具有此分隔文件中的所有樣式。WPF UserControl Resources

的資源字典:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">  
    <Style x:Key="c1BtnX1"> 
     <Setter Property="Background" Value="Bisque"></Setter> 
    </Style>  
</ResourceDictionary> 

它的地址是用戶控制組件資源/ mainResX.xaml 和View是在同一個組裝/瀏覽/ view.xaml

我認爲可以在使用是:

<Border Style="{StaticResource ResourceKey=c1BtnX1}" 
     BorderBrush="Black" 
     Width="20" 
     Height="20"> 
       <TextBlock Text="X" /> 
</Border> 

我也嘗試了用戶控件中下面的代碼,定義每控制資源,但這種方式似乎也是它不能找到資源。

<UserControl ... > 
    <UserControl.Resources> 
     <ResourceDictionary Source="../Resources/mainResX.xaml" />    
    </UserControl.Resources> 

哪裏和我該如何放置/定義這個?

+0

XAML文件的Build操作是否設置爲資源? (是否是資源?我沒有我的編碼計算機附近...) – Joe

+0

它的構建行動是沒有,我改變它爲「嵌入式資源」,但我認爲這將是很好,如果我想在跨界使用它,組件。不知道這可能是「內容」或...?! – LastBye

+0

如果您通過嚮導(資源字典)創建它,它的設置應該是正確的,不應該改變它。 – Joe

回答

3

我無法從提供的信息中知道您的文件結構是什麼。

如果resource.xaml和control.xaml位於同一個程序集的同一文件夾中,那麼只需首先引用mainResX.xaml,而不要使用「/ Resources」否則你需要以某種方式考慮文件結構。

它們在同一個組件中嗎?您可以根據需要在該位置預置儘可能多的「../」字符串,並在使用文件夾(即「../Resources/mainResX.xaml」)中「走動」樹。

如果它們在不同的程序集中,你需要指定一個包uri。實際上你可以總是這樣做,儘管在沒有必要的時候有點麻煩。下面是一個例子

<ResourceDictionary Source="pack://application:,,,/MyAssembly.Wpf;component/Resources/mainResX.xaml" /> 

HTH,
Berryl

+0

相同的組件,View.Xaml位於視圖文件夾中。資源位於資源文件夾中。 – LastBye

+0

朋友在我的帖子之前,我也試過「../Resources/mainResX.xaml」,但似乎UserControl視圖找不到。此外,我會嘗試您提供的內容,以提供有關任何進一步內部問題的更詳細信息。 – LastBye

1

我個人喜歡用我的App.xaml指定的包含,我在我的應用程序在全球範圍使用樣式XAML文件「MergedDirectory」。我通常有一個「DefaultStyles.xaml」來設置任何全局樣式(例如,當你希望應用中的所有文本框看起來都沒有指定樣式時)。然後我有一個「Styles.xaml」來設置特定的樣式,或者如果你真的有一堆它們,你甚至可以每個控件類型有一個xaml ...

事實上,你把這些放在app.xaml下它們對您的應用程序是全局的,並且不要求您不斷重新指定路徑和字典。當然,這可能不適合所有的編碼情況,但對我而言,這是節省時間的。

+0

感謝您提供的信息,此應用程序可能與您的應用程序有所不同,但是瞭解您的想法,+1和感謝是很好的。 – LastBye

+0

渴望知道如何根據您的方法在其他程序集中處理某些資源? – LastBye

+0

這與Berryl在他的回答中提到的方法相同。我不確定爲什麼它不能用於您的目的,但同樣,我目前無法訪問我的編碼計算機。 – Joe