У меня есть собственный класс, и мои свойства зависимостей не будут работать с привязками, если я не объявлю класс как статический ресурс.
Мой xaml:
<sdk:Frame prism:RegionManager.RegionName="MainContentRegion">
<sdk:Frame.ContentLoader>
<myLibrary:RegionNavigationContentLoader
RegionManager="{Binding RegionManager}"
RegionName="MainContentRegion" />
</sdk:Frame.ContentLoader>
</sdk:Frame>
Мой класс загрузчика:
public class RegionNavigationContentLoader : FrameworkElement, INavigationContentLoader
{
public static readonly DependencyProperty RegionManagerProperty = DependencyProperty.Register("RegionManager", typeof(IRegionManager), typeof(RegionNavigationContentLoader), new PropertyMetadata(null));
public IRegionManager RegionManager {
get { return (IRegionManager)GetValue(RegionManagerProperty); }
set { SetValue(RegionManagerProperty, value); }
}
public static readonly DependencyProperty RegionNameProperty = DependencyProperty.Register("RegionName", typeof(string), typeof(RegionNavigationContentLoader), new PropertyMetadata(null));
public string RegionName {
get { return (string)GetValue(RegionNameProperty); }
set { SetValue(RegionNameProperty, value); }
}
...
}
Однако он работает нормально, когда я объявляю загрузчик ресурсом, а затем передаю его как статическую привязку ресурса к фрейму.
<Grid.Resources>
<myLibrary:RegionNavigationContentLoader x:Key="RegionLoader"
RegionManager="{Binding RegionManager}"
RegionName="MainContentRegion" />
</Grid.Resources>
<sdk:Frame prism:RegionManager.RegionName="MainContentRegion"
ContentLoader="{StaticResource RegionLoader}"/>
Это не имеет большого значения, но я хочу знать почему. Кто-нибудь знает?