App.xamlアクセスXAMLリソースは、CS
<XmlDataProvider x:Key="ListData" Source="Resources\ListData.xml" XPath="/Data"/>
に私は、XAMLでどこでもこれにアクセスすることができますよ。
しかし... MainWindow.xaml.csコンストラクタApp()
とMainWindow()
において
InitializeComponent();
model.SetResource(this.FindResource("ListData"));
、this.Resources.Count = 0 this.FindResource("ListData")
戻り右Source
なくヌルData
とDocument
持つオブジェクト。
- ソース{リソース\ ListData.xml}のSystem.Uri
Model.cs:
internal void SetResource(object v)
{
_listData = (System.Windows.Data.XmlDataProvider)v;
_listData.InitialLoad();
}
これが返されていない例外やエラーで動作しますが、何のデータが生成されません。
_listData.Error null System.Exception
_listData.Document null System.Xml.XmlDocument
_listData.Data null object
XAMLとcsの間でリソースを共有するにはどうすればよいですか?
file propertyBuild Action
はResource
として設定されています。 "namespace.filename.extension、namespaceはVisual C#プロジェクトのDefaultNamespaceプロパティの値です"の下のマニフェストにファイルが含まれている必要があります。
私は次のようにそれを見つけることができなかった:
System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
System.Reflection.ManifestResourceInfo listDataInfo = assembly.GetManifestResourceInfo("MyNamespace.ListData.xml");
は、ここに提示し、同様の問題があるが、私は、出力ディレクトリにリソースをコピーしたくない:私はビルドを行う場合http://stackoverflow.com/a/6151003/2091951 –
Action組み込みリソースは 'assembly.GetManifestResourceNames()'に現れますが、xamlではアクセスできなくなりました。 –
ResourceManagerを使用する追加の解決方法があるかもしれません。 添付のプロジェクト:https://www.codeprojectをご覧ください。com/articles/835140/one-more-time-about-resource-vs-embeddedresource –