這是可能的手動編輯共享的項目設置資源字典生成操作。
共享工程由Project.shproj
和Project.projitems
文件,打開第二和定位的字典裏:
<ItemGroup>
<None Include="$(MSBuildThisFileDirectory)Dictionary.xaml" />
</ItemGroup>
添加後
<ItemGroup>
<Page Include="$(MSBuildThisFileDirectory)Dictionary.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
</ItemGroup>
它含有正常csproj
複製/粘貼的事情WPF項目字典。
似乎可以工作,但是當項目加載到Visual Studio中時,此構建操作不可見。將文件添加到共享項目不會影響此手動更改。
現在我可以共享包含資源字典的項目了,耶!
資源字典可以被合併到應用字典等,如果它位於該項目的根(在XAML設計使用如靜態/動態資源):
<Application.Resources>
<ResourceDictionary >
<ResourceDictionary.MergedDictionaries>
<!-- doesn't really exists in project -->
<ResourceDictionary Source="Dictionary.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
和/或手動加載,例如使用此pack Uri:
var dictionary = new ResourceDictionary()
{
Source = new Uri("pack://application:,,,/FlexProperty.xaml"),
};
不,應用程序的名稱應該只是罰款。用Dictionary1.xaml代替'Dictionary2.xaml'將使我的代碼正常工作,但我的目標是在共享項目中定位字典。你的改變應該有所作爲,因爲構建動作仍然是「無」。您可以創建相同的項目結構(wpf解決方案,添加共享項目,添加資源字典,將其移動到共享項目),並將代碼放入主窗口構造函數中並親自查看。 – Sinatr
你試過我的迴應嗎?因爲您的無共享項目也是應用程序的名稱。 – Bryan
*「您的無共享項目也是應用程序的名稱」* - 我不明白這一點。沒有必要嘗試任何東西,只要構建動作仍然是「無」,它就無法工作。 – Sinatr