سؤال

محاولة الحصول على هذا المثال العمل من http://www.munna.shatkotha.com/blog/post/2008/10/26/light-box-ewefect-with-wpf.aspx

ومع ذلك ، لا يمكنني الحصول على مساحة الاسم أو بناء الجملة من أجل "العملية" أدناه.

<Border x:Name="panelDialog" Visibility="Collapsed">
<Grid>
<Border Background="Black" Opacity="0.49"></Border>
<!--While Xmal Content of the dialog will go here-->
</Grid>
</Border>

يمضي منشور المدونة ليقول .....

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

<Page x:Class="Home">
<Grid>
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<!--All the contents will go here-->
</ScrollViewer>
<Border x:Name="panelLoading" Visibility="Collapsed">
<Grid>
<Border Background="Black" Opacity="0.49"></Border>
<local:TMEWaitScreen></local:TMEWaitScreen>
</Grid>
</Border>
</Grid>
</Page>

هنا هو codebehind

#region About Wait Screen
/// <summary>
/// Show wait screen before a web request
/// </summary>
public void ShowWaitScreen()
{
Process del = new Process(ShowWaitScreenUI);
Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, del);
}
private void ShowWaitScreenUI()
{
panelLoading.Visibility = Visibility.Visible;
}
/// <summary>
/// Hide a wait screen after a web request
/// </summary>
public void HideWaitScreen()
{
Process del = new Process(HideWaitScreenUI);
Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, del);
}
private void HideWaitScreenUI()
{
panelLoading.Visibility = Visibility.Collapsed;
}
#endregion

أواجه مشكلات مع هذه الخطوط على وجه التحديد:

Process del = new Process(ShowWaitScreenUI);

العملية الوحيدة التي يمكنني العثور عليها هي في النظام. التشخيص ، ولا تأخذ أي حجج. هل منشور المدونة الذي أحاول أن أتعلمه من OFF ، أم أنني فقط في المكان الخطأ؟

هل كانت مفيدة؟

المحلول

الأخطاء المطبعية هنا: يجب تغيير العملية و showwaitscreenhandler إلى showwaitscreenuihandler.

الإرساء يحتاج إلى استخدام. انقر بزر الماوس الأيمن على الإرسال واختر حل.

نصائح أخرى

يبدو أن الشخص الذي كتب المدونة نسي تحديد مندوبهم المخصص الذي يسمى العملية (القليل من الاسم الغريب لذلك).

private delegate void Process();

يجب أن تجمع الآن معها المحددة.

لكني أحب هذا النوع من الأسماء بدلاً من ذلك.

private delegate void HideWaitScreenHandler();
private delegate void ShowWaitScreenHandler();

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

private delegate void ShowWaitScreenUIHandler(bool show);

void ShowWaitScreenUIThreaded(bool show)
{
    Process del = new ShowWaitScreenHandler(OnShowWaitScreenUI);
    Dispatcher.Invoke(DispatcherPriority.Normal, del, show);
}

void OnShowWaitScreenUI(bool show)
{
    panelLoading.Visibility = show ? Visibility.Visible : Visibility.Collapsed;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top