C# 以编程方式定义StackPanel资源?

C# 以编程方式定义StackPanel资源?,c#,.net,wpf,C#,.net,Wpf,我只是在网上找到了一些WPF样本,发现了一个奇怪的行为,我将其简化如下: <StackPanel Name="sp1"> <StackPanel.Resources> <!--<src:ItemsForSale x:Key="MyData"/>--> </StackPanel.Resources> <ListView Name="itemsControl" ItemsSource="{St

我只是在网上找到了一些WPF样本,发现了一个奇怪的行为,我将其简化如下:

  <StackPanel Name="sp1">
    <StackPanel.Resources>
      <!--<src:ItemsForSale x:Key="MyData"/>-->
    </StackPanel.Resources>
    <ListView Name="itemsControl"  ItemsSource="{StaticResource MyData}">
      <ListView.View>
      </ListView.View>
    </ListView>
  </StackPanel>
我得到运行时异常
PresentationFramework.dll中发生了类型为“System.Windows.Markup.XamlParseException”的第一次意外异常


我尝试将资源添加到stackpanel的
Loaded
Initialized
事件中,但没有成功。

总结注释问题是由初始化期间需要
MyData
资源的控件引起的,并引发此异常:

找不到名为“MyData”的资源。资源名称区分大小写


若要解决此问题,请使用
StaticResource
而不是
DynamicResource

InnerExeception
表示什么?
{“找不到名为“MyData”的资源。资源名称区分大小写。}
无法初始化使用该资源的控件。@dkozl Nope-sp1在该点为空引用。@maxp,尝试将该行保持在原来的位置,将
StaticResource
更改为
DynamicResource
。在我的案例中,这似乎解决了一个有趣的问题,即当
ItemSource
设置为
DynamicResource
时,基于xaml的资源定义和编程都可以工作
public MainWindow()
{
    InitializeComponent();
    sp1.Resources.Add("MyData", new ItemsForSale());
}