WPF ResourceDictionary의 Source 속성에 대한 URI 작성을 단순화하는 태그 확장을 만들려고합니다.ResourceDictionary.Source 속성의 MarkupExtension
문제의 최소한의 예를하는 것은 다음입니다 :
CS :
public class LocalResourceExtension : MarkupExtension
{
public override object ProvideValue(IServiceProvider serviceProvider)
{
return new Uri("Resources.xaml", UriKind.Relative);
}
}
XAML :
<UserControl ...>
<UserControl.Resources>
<ResourceDictionary Source="{mw:LocalResource}" /> <!-- error MC3022 -->
<!-- <ResourceDictionary Source="Resources.xaml" /> --> <!-- Works fine -->
</UserControl.Resources>
<!-- ... -->
</UserControl>
이 다음 오류와 함께 컴파일되지 않습니다 :
error MC3022: All objects added to an IDictionary must have a Key attribute or some other type of key associated with them.
그러나 주석 확장 줄을 주석 달린 줄에 표시된대로 상수 값으로 바꾸면 모든 것이 잘됩니다.
마크 업 확장자가있는 버전이 작동하지 않는 이유는 무엇입니까? 거기에 대한 해결 방법이 있습니까? 내가 MSVC 2015
''안에 넣으려고 했습니까? –
@EdPlunkett 좋은 해결 방법입니다. 감사합니다. 생각하지 않았어. 그러나이 경우 내 확장 프로그램은 모든 용도에 4 줄을 더 추가하기 때문에 '단순화'하지 않습니다 ... – nevermind
또한 디자인 타임에는 작동하지 않으므로 ResourceDictionary 요소가 파란 색으로 표시됩니다. 무해하지만 성가심. 실제 해결책은 필요로하는 내용을 병합하는 정규 리소스 사전을 작성하고이를 명시 적으로 포함하는 것입니다. –