したがって、私たちのStyles.xamlドキュメントでは、外部XMLを使用してスタイルの色を指定しています。私たちはこれがコーダーではない人々が私たちのアプリの見た目を変更できるようにするための抽象的なレベルを提供すると考えました。リンクされたコンテンツはリソース辞書では機能しません。
それは何か、この作品:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:CalManv4UI"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero"
xmlns:toolkit="http://schemas.microsoft.com/wpf/2008/toolkit"
mc:Ignorable="d"
>
<XmlDataProvider x:Key="BrandInfo" Source="/Config/BrandInfo.xml" XPath="BrandRoot" />
<Style TargetType="{x:Type TextBox}">
<Setter Property="Foreground" Value="{Binding Source={StaticResource BrandInfo}, XPath=//Colors/@TextBoxForeground}"/>
<Setter Property="Background" Value="{Binding Source={StaticResource BrandInfo}, XPath=//Colors/@TextBoxBackground}"/>
<Setter Property="FontSize" Value="11"/>
<Setter Property="FontFamily" Value="Verdana"/>
</Style>
</ResourceDictionary>
をそして、これは動作し、すべてが順調ですが、私たちは、メインアプリのスタイルを再利用しますヘルパーアプリケーションのカップルを追加する必要がありました。
私はメインのアプリケーションを参照していたので、すべてのコードを調べて、スタイルを再利用することができました。しかし、私がこれを行うと、IOException "リソース 'config/brandinfo.xml'を見つけることができません。" mainAppがrefrencedされて以来、brandinfo.xmlがコピーされていることを二重に確認したので、困惑しました。
私が試みたと思う次のことは、リンクされたファイルとして使用しているので、configフォルダを作成し、リンクとして追加して、常にコンテンツコピーに設定します。これは私のcsprojファイルにこのコードを作成します
<ItemGroup>
<Content Include="..\MainAppUI\Config\BrandInfo.xml">
<Link>Config\BrandInfo.xml</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
まだ動作しませんので、最後にファイルとして追加しました。これは私のcsprojファイルにこのコードを作成します。
<ItemGroup>
<Content Include="Config\BrandInfo.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
これでうまくいきましたが、私はBrandInfoファイルを2部持っています。これは、今後の人口増加の問題です。
これは外部アセンブリからのXAMLファイルを含むように思われますが、私は緩やかなxmlファイルを扱っています。 –
'pack:// sourceoforigin:'構文を使用しようとしましたが、これはテストしていません。 – XAMeLi
SilverlightとWPFの間でファイルを共有するときに同じ問題が発生しました。元のファイルをWPFに移動し、リンク先のファイルをSilverlightソリューションで使用することで修正しました。 Silverlightのコンパイラは、リンクされたファイルで正しく動作するようです! (私はあなたのためのリンクを修正しました)http://learnwpf.com/post/2008/11/15/XAML-Complier-has-issues-with-linked-xaml-files.aspx – Kolky