的App.xaml
modelBuilder.Entity<Category>()
.HasMany(x => x.ProductCategories)
.WithRequired(x => x.Category)
.HasForeignKey(x=>x.CategoryId);
modelBuilder.Entity<Product>()
.HasMany(x => x.ProductCategories)
.WithRequired(x => x.Product)
.HasForeignKey(x => x.ProductId);
我能够在xaml中随处访问它。
但是... MainWindow.xaml.cs
<XmlDataProvider x:Key="ListData" Source="Resources\ListData.xml" XPath="/Data"/>
在构造函数InitializeComponent();
model.SetResource(this.FindResource("ListData"));
和App()
中,this.Resources.Count = 0. MainWindow()
返回一个右this.FindResource("ListData")
但空Source
的对象, Data
。
Model.cs:
Document
运行时不会返回任何异常或错误,但不会生成任何数据。
internal void SetResource(object v)
{
_listData = (System.Windows.Data.XmlDataProvider)v;
_listData.InitialLoad();
}
如何在XAML和cs之间共享资源?
file property _listData.Error null System.Exception
_listData.Document null System.Xml.XmlDocument
_listData.Data null object
设为Build Action
。这应该意味着该文件位于&#34; namespace.filename.extension下的清单中,其中namespace是Visual C#项目中的DefaultNamespace属性的值&#34;。
我没有找到以下内容:
Resource
答案 0 :(得分:0)
好的,这真的感觉像是黑客,但它似乎确实有效。您可以使用任何运营商控制,我恰好需要一个ComboBox ...
在.xaml文件中
<ComboBox Loaded="List_Port_Loaded" Tag="{Binding Source={StaticResource ListData}, XPath=Valves}" />
<。>在.cs文件中
private void List_Port_Loaded(object sender, RoutedEventArgs e)
{
XmlElement valveXML = ((ComboBox)sender).Tag as XmlElement;
}
我愿意接受更好的答案......
答案 1 :(得分:0)
的App.xaml:
<XmlDataProvider x:Key="ListData" Source="Resources\ListData.xml" XPath="/Data" IsInitialLoadEnabled="True" IsAsynchronous="False"/>
MainWindow.xaml.cs:
InitializeComponent();
model.SetListData((this.FindResource("ListData") as System.Windows.Data.XmlDataProvider).Document);
此XmlDocument已完全填充。
Reference: How-to access XmlDataProvider's data as XmlDocument from code behind?