2017-12-12 9 views
0

私はDataTemplateを定義しようとしていますが、その中にはButtonのスタイルを設定したいと思います。現在、私はおそらくより良いいくつかのコードを表示するMergedDictionariesUserControlを...ている:私は私のButtonStyles.xamlに位置していますMyButtonStyleDataTemplateButtonのスタイルを設定したいデータテンプレート内の別の辞書の静的リソースを使用することはできますか?

<UserControl.Resources> 
    <ResourceDictionary.MergedDictionaries> 
     <!-- MyButtonStyle is in this dictionary --> 
     <ResourceDictionary Source="ms appx:///Dictionaries/ButtonStyles.xaml"/> 

     <ResourceDictionary> 
      <DataTemplate x:Key="MyDataTemplate"> 
       <Grid> 
        <!-- Here is the button I want to apply the style to --> 
        <Button Style="{StaticResource MyButtonStyle}"/> 
       </Grid> 
      </DataTemplate> 
     </ResourceDictionary> 
    </ResourceDictionary.MergedDictionaries> 
</UserControl.Resources> 

。しかし、次のエラーが表示されます。

Resource `MyButtonStyle` is not found 

私の例でリソースを正しく参照するにはどうすればよいですか?

+0

あなたの辞書をアプリケーションのリソースに移動できますか? – JohnyL

+0

この時点で実際にはできません。 – visc

+0

それは臭いです。だから私は私たちのための唯一のソリューションは、スタイルを直接ローカルリソース辞書にコピーすることだと思います。 – visc

答えて

0

StaticResourceは、次の順序でリソースを検索します:以前のMergedDictionariesで同じ辞書

  • リソースの
  • アプリケーションリソース
  • それは検索しませんと宣言している

    1. すべてのリソースを兄弟の合併した辞書で。

      MyButtonStyleは、MyDataTemplateのResourceDictionaryには含まれておらず、MergedDictionariesのいずれにも含まれていません。あなたが必要なものは:

      <UserControl.Resources> 
          <ResourceDictionary> 
      
           <ResourceDictionary.MergedDictionaries> 
            <!-- MyButtonStyle is in this dictionary --> 
            <ResourceDictionary Source="ms appx:///Dictionaries/ButtonStyles.xaml"/> 
           </ResourceDictionary.MergedDictionaries> 
      
           <DataTemplate x:Key="MyDataTemplate"> 
            <Grid> 
             <!-- Here is the button I want to apply the style to --> 
             <Button Style="{StaticResource MyButtonStyle}"/> 
            </Grid> 
           </DataTemplate> 
      
          <ResourceDictionary> 
      </UserControl.Resources> 
      
    +0

    エラーが出ています:「結合可能なプロパティMergedDictionariesがタイプResourceDictionaryで見つかりませんでした。」 – visc

    +1

    あなたの解決策は '' ' '? – visc

    +0

    @viscはい、そうです。私は私の答えを編集しました。 – nevermind