Silverlight 3 Browser Zoom Support ، توقف واجهة المستخدم عن التقديم أثناء تغييرات التكبير

StackOverflow https://stackoverflow.com/questions/1556969

سؤال

Silverlight 3 يحتوي الآن على دعم تكبير المتصفح. المشكلة الحالية التي أواجهها هي أنه يبدو كما لو أن واجهة المستخدم Silverlight لا تحديث (إعادة تقديم) أثناء تغييرات مستوى التكبير المتعددة التي تتضمن (Ctrl+Mouse Wheel) أو (Ctrl+) و (Ctrl-). تم العثور على هذا عند اختبار مع متصفح IE8 ، على نظام التشغيل Windows XP SP2.

في البداية ، اعتقدت أن هذه مشكلة في الأداء عند تقديم تطبيقي ، لكنني تمكنت أيضًا من إعادة إنتاج نفس المشكلة مع بعض النص وزر فقط على صفحتي (يمكن العثور على اختبار XAML في نهاية المنشور). في بعض الحالات ، تتوقف واجهة المستخدم عن الاستجابة (الماوس على التغييرات البصرية). في حالات أخرى ، تستجيب الصفحة ولكن لا يتم تقديمها لمستوى التكبير الصحيح.

يمكنني تنفيذ وظائف التكبير الخاصة بي ، لكنني أعتقد أنه سيكون من الأفضل على المدى الطويل السماح للمتصفح أو المكون الإضافي يتعامل مع ميزات التكبير (لماذا رمز الميزة نفسها مرتين؟). أنا أفكر أيضًا في تعطيل دعم Autozoom لتطبيق Silverlight.

بعد النظر في بعض تطبيقات Silverlight الأخرى ، وجدت أن الغالبية التي لا تعطيل Autozoom لها نفس المشكلة. بعد النظر في المشكلة بشكل أعمق قليلاً ، سيتم تصحيح واجهة المستخدم عندما يتغير حجم نافذة المتصفح (حيث أن هذا يفرض واجهة المستخدم على تحديث حجم العرض الذي يصحح المشكلة) أو إذا تم تمرير الصفحة (والتي يبدو أنها ترسل أيضًا عرضًا تحديث إلى واجهة المستخدم). هل يعرف أي شخص طريقة لحل هذه المشكلة أو حل بديل لا يتضمن كتابة رمز التكبير المخصص؟

فيما يلي الخطوات التي استخدمتها لإنتاج المشكلة. (إذا كنت ترغب في مشروع الاختبار ، فقد استخدمت لي أن أعرف وأستطيع إرساله إليك بالبريد الإلكتروني.)

الخطوة 1: إنشاء تطبيق Silverlight جديد باستخدام Visual Studio 2008. الخطوة 2: أضف XAML إلى الصفحة الرئيسية (XAML في نهاية المنشور). الخطوة 3: قم بتشغيل التطبيق في IE8 باستخدام صفحة HTML وصفحة البدء الافتراضية. الخطوة 4: قم بتغيير مستوى التكبير باستخدام (Ctrl+Mouse Wheel). قد تضطر إلى تحريك عجلة الماوس بسرعة كبيرة حتى يحدث هذا في المرة الأولى. عادة التكبير ثم التكبير بسرعة. ملاحظة: بعد الخطوة 4 ، سيكون لدى واجهة المستخدم بعض المشكلات التي ذكرتها أعلاه. تم إنتاج هذا على 6 آلات مختلفة تعمل IE8.

رمز XAML لملف MainPage:

<Grid x:Name="LayoutRoot">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <StackPanel Orientation="Horizontal" Background="LightGray" Grid.Row="0">
        <TextBlock Text="Testing Web Page" FontSize="16" FontWeight="Bold" 
                                                           Foreground="Green"/>
    </StackPanel>
    <Button Grid.Row="1" Content="Large Damn Button" Height="34"/>
</Grid>
هل كانت مفيدة؟

المحلول

واجهت نفس المشكلة وفي حالتي<param name="windowless" value="true" />كان الحل. Min و Max القيم التي يتم طلبها للحصول على العمل.

نصائح أخرى

ذهبت إلى منتدى Silverlight حول هذه المسألة ، لكن لم يكن هناك أحد يواجه المشكلة أو لم أكن أعرف كيفية إصلاحه. ما فعلته تم ضبط ارتفاع دقيقة وعرض على سيطرتي في صفحة HTML وفي XAML. منذ القيام بذلك ، لم تعود المشكلة. على الرغم من أنني ما زلت غير واضح لماذا يبدو أن هذا يمثل مشكلة. إذا كان شخص ما يواجه مشكلة مماثلة ، فراجع رمز العينة أدناه:

#silverlightControlHost {
    height: 100%;
    text-align:center;
    margin:0;
    padding:0;
    min-height:550px;
    min-width:800px;
}

 <form id="form1" runat="server" style="height:100%;width:100%;position:absolute;top:0px;left:0px;z-index:0;min-height:550px;min-width:800px">
<div id="silverlightControlHost" style="height:100%;width:100%;min-height:550px;min-width:800px">
   <object id="slControl" data="data:application/x-silverlight-2," type="application/x-silverlight-2" style="position:absolute;top:0px;left:0px" width="100%" height="100%">
      <param name="source" value="ClientBin/Dupree.xap"/>
      <param name="onError" value="onSilverlightError" />
      <param name="background" value="white" />
      <param name="minRuntimeVersion" value="3.0.40624.0" />
      <param name="autoUpgrade" value="true" />
      <param name="EnableGPUAcceleration" value="true" />
      <param name="maxframerate" value="30" />
      <param name="windowless" value="true" />
      <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0" style="text-decoration:none">
          <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style:none"/>
      </a>
    </object>
    <iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe>
</div>
</form>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top