Кто-нибудь имел какой-либо успех, включив Silverlight ControlTemplate в приложение F # Silverlight. Я пытаюсь добавить переходы к элементу Navgiation.Frame и следую примеру с C #: http://www.davidpoll.com/2009/07/19/silverlight-3-navigation-adding-transitions-to-the-frame-control
Загруженный источник использует опцию MSBUILD: Compile в шаблоне XAML, и файл включен как «Страница» ... ILDASM не показывает ни один объект, созданный для XAML;
В моем проекте я включил его как «Ресурс» (так же, как я сделал для своих страниц) и сослался на него в app.xaml:
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Module1.MyApp">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/FSSilverlightApp;component/TransitioningFrame.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
TransitioningFrame.xaml выглядит следующим образом:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
xmlns:toolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Layout.Toolkit">
<ControlTemplate x:Key="TransitioningFrame" TargetType="navigation:Frame">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
<toolkit:TransitioningContentControl Content="{TemplateBinding Content}"
Cursor="{TemplateBinding Cursor}"
Margin="{TemplateBinding Padding}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
Transition="DefaultTransition" />
</Border>
</ControlTemplate>
</ResourceDictionary>
Все объекты моей страницы загружают свой соответствующий xaml с следующим кодом:
type Page1() as this =
inherit UriUserControl("/FSSilverlightApp;component/Page1.xaml")
do
Application.LoadComponent(this, base.uri)
и где-нибудь в запуске приложения:
let p1 = new Page1()
У меня нет сопоставимой части для ControlTemplate - хотя я надеялся, что объект приложения и App.xaml вытянет его волшебным образом (кроме того, опора на эту магию привела к созданию 100% f # применение Silverlight довольно сложно - так как почти все опубликованные статьи, которые я нахожу, основаны на волшебниках и коротких путях - очень мало на реальной сантехнике - тьфу).
страница xaml ссылается на элемент управления через:
<StackPanel Grid.Row="3" Grid.Column="2" Name="mainPanel">
<navigation:Frame Name="contentFrame" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Template="{StaticResource TransitioningFrame}"/>
</StackPanel>
Любые советы или рекомендации по этому вопросу приветствуются.
Согласно комментарию brians, я исследовал диагностику команды MSBUILD, и похоже, что она не делает ничего, кроме как включить ее в качестве ресурса:
Создание файла .resources:
'OBJ \ Debug \ TransitioningNavigation.g.resources' ...
(TaskId: 14) Файл ресурса чтения:
'C: \ Users \ todd.brown \ Desktop \ TransitioningNavigation \ TransitioningNavigation \ Assets \ Styles.xaml' ...
(TaskId: 14) Идентификатор ресурса
"Активы / styles.xaml. (TaskId: 14)
Чтение ресурса:
'C: \ Users \ todd.brown \ Desktop \ TransitioningNavigation \ TransitioningNavigation \ Assets \ TransitioningFrame.xaml' ...
(TaskId: 14) Идентификатор ресурса
"Активы / transitioningframe.xaml.
(TaskId: 14) * * тысяча тридцать два
Хорошо, одна интересная вещь заключается в том, что если я переименую ссылку на ContentTemplate xaml внутри App.xaml - приложение не загружается и выдает ошибку - так что я полагаю, что на страницу ссылаются и загружаются правильно. то есть это плохо
<ResourceDictionary Source="/FSSilverlightApp;component/TransitioningFrameBAD.xaml"/>