2017-03-22 18 views
0

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なくヌルDataDocument持つオブジェクト。

  • ソース{リソース\ 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 ActionResourceとして設定されています。 "namespace.filename.extension、namespaceはVisual C#プロジェクトのDefaultNamespaceプロパティの値です"の下のマニフェストにファイルが含まれている必要があります。

私は次のようにそれを見つけることができなかった:

 System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly(); 
     System.Reflection.ManifestResourceInfo listDataInfo = assembly.GetManifestResourceInfo("MyNamespace.ListData.xml"); 
+0

は、ここに提示し、同様の問題があるが、私は、出力ディレクトリにリソースをコピーしたくない:私はビルドを行う場合http://stackoverflow.com/a/6151003/2091951 –

+0

Action組み込みリソースは 'assembly.GetManifestResourceNames()'に現れますが、xamlではアクセスできなくなりました。 –

+0

ResourceManagerを使用する追加の解決方法があるかもしれません。 添付のプロジェクト:https://www.codeprojectをご覧ください。com/articles/835140/one-more-time-about-resource-vs-embeddedresource –

答えて

0

[OK]を、これは本当にハックのように感じ、動作するようには思えません。あなたは、私が喜んだろう.csファイルで

<ComboBox Loaded="List_Port_Loaded" Tag="{Binding Source={StaticResource ListData}, XPath=Valves}" /> 

private void List_Port_Loaded(object sender, RoutedEventArgs e) 
    { 
     XmlElement valveXML = ((ComboBox)sender).Tag as XmlElement; 
    } 

ファイルの.xamlファイルに...私はコンボボックスを必要とするために起こる、

を、このための任意のキャリアコントロールを使用することができますより良い答えを受け入れるように...

0

App.xaml:

<XmlDataProvider x:Key="ListData" Source="Resources\ListData.xml" XPath="/Data" IsInitialLoadEnabled="True" IsAsynchronous="False"/> 

MainWindow.xaml.cs:このXmlDocumentオブジェクトが完全に移入され

InitializeComponent(); 
model.SetListData((this.FindResource("ListData") as System.Windows.Data.XmlDataProvider).Document); 

Reference: How-to access XmlDataProvider's data as XmlDocument from code behind?

関連する問題