C# 以编程方式定义StackPanel资源?
我只是在网上找到了一些WPF样本,发现了一个奇怪的行为,我将其简化如下: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
<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());
}