Первым шагом является создание экземпляра PlayerWindow.
string targetTypeName = "Microsoft.Expression.Prototyping.Workspace.PlayerWindow, Microsoft.Expression.Prototyping.Runtime, Version=4.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35";
var targetType = Type.GetType(targetTypeName);
var view = container.Resolve(targetType) as PlayerWindow;
Простого создания PlayerWindow недостаточно. Внутри окна проигрывателя есть код, который, к сожалению, использует CallingAssembly, чтобы найти содержимое Sketch.Flow и десериализовать его. Ниже я изменил код, найденный в классе Microsoft PlayerWindow, чтобы сделать это, чтобы использовать указанную сборку вместо той, которая получена из CallingAssembly.
string str = string.Format(CultureInfo.InvariantCulture, "/SilverlightPrototype1.Screens;Component/Sketch.Flow", new object[] { PlayerContext.Instance.LibraryName });
StreamResourceInfo resourceStream = Application.GetResourceStream(new Uri(str, UriKind.RelativeOrAbsolute));
if (resourceStream != null)
{
data = Serializer.Deserialize(resourceStream.Stream);
}
После получения десериализованного содержимого Sketch.Flow я думаю, что мне нужно повторно инициализировать NavigationViewModel PlayerWindow, используя эти данные и другие модели представления, MiniFlowGraphViewModel, AnnotationViewModel, BrandingModel, а также обновить DesignTimeAnnotations.
PlayerContext.Instance.RuntimeData = data;
view.NavigationViewModel = new NavigationViewModel(data);
view.MiniFlowGraphViewModel = new FlowGraphViewModel();
view.AnnotationViewModel = new AnnotationViewModel(view.NavigationViewModel, data.RuntimeOptions.DisableInking, data.RuntimeOptions.HideDesignTimeAnnotations);
view.BrandingModel = new BrandingModel(data);
PlayerContext.Instance.BrandingModel = new BrandingModel(data);
К сожалению, похоже, что свойство DesignTimeAnnotations в PLayerWindow является внутренним или частным, поэтому я не уверен, как его обновить.
Выполнение вышеизложенного приведет меня к SketchFlow Player внутри региона с навигационным дисплеем, показывающим, что я в данный момент нахожусь на «Экране 1». Однако область отображения основного экрана пуста, а левые панели управления не работают. Я получаю множество ошибок BindingExpression в NavigationViewModel, BrandinModel и FlowGraphModel.
- Увеличить
- DockedControls
- CollapsedControls
- SharedInkStrokes
- InkVisibility
- InkEditingMode
- IsInkEditModeNone
- IsMapOpen
- IsFlowOverviewOpen