Silverlight с динамической высотой

Спецификация UnifiedPOS (включая OPOS) поддерживает только 32-разрядную версию.

Скачать текущую версию 1.14.1 UnifiedPOS
Страница A-1

Цели OLE для Retail POS (или " OPOS ") включает в себя:
- Определение архитектуры для доступа к POS-устройствам на основе Win32.
- Определение набора интерфейсов POS-устройств, достаточных для поддержки ряда POS-решений.

blockquote>

Страница A-3

CO - это стандартный ActiveX (то есть, OLE 32-битный) элемент управления, который невидим во время выполнения.

blockquote>

Common CO поддерживает только 32 бита.
MCS: OPOS Common Control Objects - текущая версия

Я экспериментально создал Common CO, который поддерживает 64-битную версию, но это неформально.
kunif / OPOS-CCO

Если вы используете OPOS в качестве сервисного объекта в POS для .NET, вам нужно управлять им с 32-битным.

Для 32-битного exe / dll, который работает в 64-битной ОС, соответствующие данные реестра разделяются под узлом WOW6432 в разных местах.
Однако некоторые реестры разделены на 64/32, некоторые реестры связаны с 64/32 и т. Д.

Хотя поставщики устройств могут поддерживать 64-битную систему независимо, считается, что их немного.

Возможны следующие предложения.

  1. Разделите приложение на два или более процессов и свяжите их посредством межпроцессного взаимодействия.
    Основное приложение, запущенное в 64-битном процессе.
    Приложение управления вводом / выводом (OPOS), работающее в 32-битном процессе.
  2. Использовать только оборудование поставщика и OPOS, которые независимо поддерживают 64-битную версию.
  3. Использовать 32-битный OPOS из 64-битного приложения, используя методы, подобные описанным в комментариях.

Кроме того:
Дополнительная информация о методе «3». как следует.

DLL-суррогаты
Требования к DLL-серверу
Использование системного суррогата
Написание пользовательского суррогата

Интерфейсы, которые не являются удаляемыми (например, для последних OCX), не будут работать с суррогатом системы. Пользовательский суррогат может обернуть интерфейсы библиотеки DLL своей собственной реализацией и использовать DLL прокси / заглушки с удаленным определением IDL, которое позволит удаленному интерфейсу.

blockquote>

Доступ к 32-разрядным библиотекам DLL из 64-разрядного кода в статье StackOverflow
Доступ к 32-разрядным библиотекам DLL из 64-разрядного кода [118 ] Оригинальная статья

Как создать суррогатный COM-экземпляр?
Хостинг .NET DLL в качестве внепроцессного COM-сервера (EXE)
DllSurrogate
Перечисление REGCLS

5
задан ptoinson 9 May 2009 в 01:42
поделиться

3 ответа

  1. Установить переполнение на «авто»
  2. Установить прокрутку на «нет»
  3. Установить поле на «0»
  4. Установить ширину и высоту содержащего div на «100» % "
  5. Установите ширину и высоту элемента управления Silverlight на" 100% "

Это должно охватывать все ваши базы. Ниже приведен образец HTML.

Попробуйте следующее:

<style type="text/css"> 
html, body { overflow:auto } 
</style>
<head>
    <title>My App</title>
</head>
<body id="bodyId" style="margin:0;" scroll="no">
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
         <div style="position: fixed; height: 100%; width: 100%">
            <avn:Silverlight 
                ID="xamlHost" 
                runat="server" 
                Source="~/ClientBin/THE.xap" 
                MinimumVersion="x.x.xxxxx" 
                Width="100%" 
                Height="100%" 
                />
         </div>
    </form>
</body>
</html>
2
ответ дан 15 December 2019 в 01:10
поделиться

Я использовал это и, похоже, работает хорошо. Необходимо получить размер "ed" для рендера.

private void LayoutRoot_LayoutUpdated(object sender, System.EventArgs e)
{
    // Set the size of the SL object to the new rendered size of the Grid.
    ResizeSilverlightOnject(this.LayoutRoot.RenderSize.Height);
}

private void ResizeSilverlightObject( double height )
{
    HtmlPage.Window.Invoke( "ResizeObject", new object[] { height } );
}
1
ответ дан 15 December 2019 в 01:10
поделиться

Если вы пытаетесь определить высоту с помощью Validation Summary (немного не связанного с этим вопросом, но полезного), попробуйте следующее: В вашем Page.xaml.cs // сохраните исходную высоту в событии Page_Loaded

void Page_Loaded(object sender, RoutedEventArgs e)
{
        SetupPage();
        this.ValidationSummary.SizeChanged += new SizeChangedEventHandler(ValidationSummary_SizeChanged);
}
void ValidationSummary_SizeChanged(object sender, SizeChangedEventArgs e)
    {
        if (this.OriginalPageHeight == 0.0)
        {
            this.OriginalPageHeight = this.RenderSize.Height;
        }
        else
        {
            double expandSize = this.OriginalPageHeight + e.NewSize.Height;
            ResizeSilverlightObject(expandSize);
        }
    }

EDIT: добавлена функция Javascript и функция cs

    function ResizeObject(height) {
        var host = document.getElementById("uploaderHost");
        host.style.height = height + "px";
    }

public void ResizeSilverlightObject(double height)
    {
       HtmlPage.HtmlWindow.Invoke("ResizeObject", new object[] { height });

    }
0
ответ дан 15 December 2019 в 01:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: