Первый шаг - создать экземпляр 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, я думаю, мне нужно повторно инициализировать PlayerWindow NavigationViewModel, используя эти данные и другие модели представления, 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
person
markti
schedule
30.11.2010