Frage

Der Versuch, dieses Beispiel zu bekommen Arbeit von http://www.munna.shatkotha.com/blog/post/2008/10/26/Light-box-effect-with-WPF.aspx

Allerdings kann ich nicht scheinen, den Namespace oder Syntax rechts für „Process“ unten zu erhalten.

<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>

Die Blog-Post geht weiter zu sagen .....

Einfach zwei Funktion für auszublenden und den Dialog anzuzeigen. Gesamt-Code ist unten angegeben. In brüllen Code habe ich einen Ladebildschirm mit Licht-Box-Effekt angezeigt. Wenn modalen Dialog Anzeige nur Show aufrufen und verstecken Bildschirm Methoden warten. Seine gute CPU expansive Arbeitsplätze Hintergrund-Thread zu senden und Dispatcher UI zu aktualisieren, während Sie im Hintergrund-Thread sind.

<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>

Hier ist der Code-Behind

#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

Ich habe Probleme mit diesen Zeilen im Einzelnen:

Process del = new Process(ShowWaitScreenUI);

Der einzige Prozess-I finden kann, ist in System.Diagnostics und keine Argumente hat. Ist die Blog-Post Ich versuche, aus dem Off zu lernen, oder bin ich nur an der falschen Stelle?

War es hilfreich?

Lösung

Typos hier:. Prozess- und ShowWaitScreenHandler muss geändert ShowWaitScreenUIHandler werden

DispatcherPriority braucht eine Verwendung. Rechtsklick auf DispatcherPriority und wählen Sie Resolve.

Andere Tipps

Sieht aus wie die Person, die das Blog schrieb vergaß ihren benutzerdefinierten Delegaten genannt Prozess (ein bisschen einen komischen Namen für sie) zu definieren.

private delegate void Process();

Es sollte nun kompilieren damit definiert.

Aber Ich mag diese Art von Namen statt.

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

Eigentlich kann man Refactoring dies einfacher zu machen.

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;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top