特定の条件に応じて、複数のアイコン サイズを許可しようとしています。'Images\Icons\...\*.png' ここで ... はサイズ (16、32、64、128、256 など) です。各フォルダーにはすべての指定されたサイズに最適化されたアイコン。
私の問題は、画像ソースパスでフォルダーを指定できないようです...つまり:
<Image x:Name = "img"
Stretch = "None"
Source = "{Binding StringFormat=Images\Icons\{0}\Multi.png,
RelativeSource={RelativeSource Self},
Path=Parent.Parent.Tag}" />
今のところ、フォルダー名を祖父母のタグに保存しているだけです (将来的には別のものにバインドする予定ですが、今はこのビットをつなぎ合わせようとしています)。上記の xaml をビルドしようとすると、エラーが発生します。
The text \Multi.png ... is not allowed after the closing } of a markup extension.
これは、{0} が文字列形式の一部ではなく、マークアップ拡張機能として認識されていることを信じさせてくれます。{} でエスケープし、一重引用符を使用して文字列形式を指定することについて読んだことがありますが、どちらも機能しません。
Source = "{Binding StringFormat={}Images\Icons\{0}\Multi.png, ...
上記は、まったくエスケープしない場合と同じエラーを返します..
Source = "{Binding StringFormat='Images\Icons\{0}\Multi.png', ...
Source = "{Binding StringFormat='{}Images\Icons\{0}\Multi.png', ...
上記の 2 つはエラーの発生を防ぎますが、画像ソースが null になります。
誰もこれを達成する方法を知っていますか?
(明確にするために、祖父母のタグが '16' に設定されている場合、画像ソースを Images\Icons\16\Multi.png にバインドする必要があります。タグが '32' に設定されている場合は、バインドする必要がありますソースを Images\Icons\32\Multi.png に変更. テストとして grandparents タグをフルパスに設定し、stringformat を除外. grandparents タグへの相対バインディングが成功し、画像が表示されました. 次の場合にのみ失敗します.残りのパスを指定するために、文字列形式でフォルダー名のみを指定しようとします)。