访问cs中的XAML资源

时间:2017-03-22 15:43:04

标签: c# xaml resources

的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

  • 来源{Resources \ ListData.xml} System.Uri

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

2 个答案:

答案 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?