我遇到了一个异常"Cannot find resource named 'mrg'. Resource names are case sensitive.",当我尝试执行以下操作时:
MainWindow.xaml:
MainWindow.xaml:
<Window.Resources>
<Thickness Left="0"
Right="1"
Bottom="2"
Top="3"
x:Key="mrg" />
</Window.Resources>
<Grid>
<ItemsControl ItemsSource="{Binding}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<local:UserControl1 />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
MainWindow.xaml.cs:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
List<string> source = new List<string>()
{
"item1",
"item2",
"item3",
"item4",
"item5",
};
DataContext = source;
}
}
和UserControl1.xaml:
<Grid>
<TextBlock Text="{Binding}" Margin="{StaticResource mrg}" />
</Grid>
根据 msdn 文章,静态资源查找行为如下:
查找过程在由设置该属性的元素定义的资源字典中检查请求的键。
然后,查找过程向上遍历逻辑树,到父元素及其资源字典。 这将继续,直到达到根元素。
接下来,会检查应用程序资源。 应用程序资源是指在 WPF 应用程序的 Application 对象所定义的资源字典中的那些资源。
我对这个问题感到困惑。 我可以解决它的方式是将资源放到应用程序级别。
我的问题是:为什么找不到 StaticResource?