「'mrg' という名前のリソースが見つかりません。リソース名では大文字と小文字が区別されます。」という例外が発生しました。次のことをしようとすると:
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 オブジェクトによって定義されるリソース ディクショナリ内のリソースです。
Locals
そのため、ステップ 2 のためにリソースを見つける必要がありました。しかし、例外がキャッチされたときにウィンドウでわかるように、 UserControl1.Parent == null
.
私はこの問題で混乱しています。私がそれを解決できる方法は、リソースをアプリケーションレベルに置くことです。
私の質問は: なぜ StaticResource connot が見つからないのですか?