안녕하세요
일반적으로 Xaml 상에서 ResourceDictionary를 등록하여 사용 중입니다.
이렇게 가져 올 경우 비주얼스튜디오 디자인 타임에서 리소스를 잘 인식합니다.
<SomeControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<!-- ResourceDictionaries -->
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</SomeControl.Resources>
하지만 이런 작업이 없이도 디자인 타임에서 Resource를 인식할 수 있었으면 좋겠는데요.
제가 하고싶은 것은,
소스코드 상에서 적용했을 때 디자인 타임에서도 적용될 수 있는 방법이 없을까요?
오래전부터 시도해봤지만 해결 방법을 찾지 못했습니다.
(런타임에서는 적용이 되지만)
그래서 저는 유저컨트롤 별로 App.xaml을 두어 Design영역에서도 보이도록 하고 있습니다.
제가 원하는 방법을 간소화 하면…
public BaseView : UserControl
{
public BaseView()
{
DesignTimeResoureAdd(resourceDictionary1);
DesignTimeResoureAdd(resourceDictionary2);
}
}
혹시 제가 하고자 하는 방법이 있을까요?
읽어주셔서 감사합니다!!
코드 상에서 추가할 경우 Runtime 실행에서는 잘 적용 되는데 디자인 상에서는 왜 적용되지 않는 것일까요?
Application.Current.Resources.MergedDictionaries.Add(...);
오래전부터 한참 찾아보긴 했는데 아직 해결은 하지 못했습니다.
그래서 차선책으로 Resource를 한 곳에 모아서 사용하고 있는데요.
App.xaml
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/DevFlow.Resources;component/ResourcePack.xaml"/>
<ResourceDictionary Source="/DevFlow.Resources;component/TemplatePack.xaml"/>
<ResourceDictionary Source="/DevFlow;component/ViewResourcePack.xaml"/>
</ResourceDictionary.MergedDictionaries>
ResourcePack.xaml
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/DevFlow.Resources;component/Theme/Black.xaml"/>
<ResourceDictionary Source="/DevFlow.Resources;component/Geometry/GeometryPack.xaml"/>
</ResourceDictionary.MergedDictionaries>
이런식으로 묶어서 사용하고 있습니다.
(그리고 현재 진행 중인 개인 프로젝트에서도 이 구조를 실제로 사용 중입니다.)
https://github.com/devncore/devflow/blob/main/src/DevFlow/App.xaml
1개의 좋아요
소스코드로 관리하려는 니즈 또는 경험은 제가 없어서 원하시는 방법은 모릅니다.
사용하시는 방법이 아마도 일반적인 방법으로 보이는데요,
아래의 오픈소스 소스코드를 확인하시면 도움이 되지 않을까 생각해봅니다.
1개의 좋아요