Laden...

Forenbeiträge von MysticEmpires Ingesamt 302 Beiträge

15.08.2016 - 10:42 Uhr

Die Frage ist wie kommt das a:ReplyTo den zustande? Es ist ja nicht so das ich das definiert hätte. Ich habe das ganze ja auch per SOAPUi getestet. ReplyTo wird vom Server garnicht erwartet. To,Action and MessageID sind die einzigen die er benötigt.

Mein Code ist sehr rudimentär:

var binding = new WSHttpBinding(SecurityMode.Transport);
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;

var entpointAddr = new EndpointAddress("https://EndPoint123/services");

using (var client = new DocumentManagementServicePortTypeClient(binding, entpointAddr))
{
    client.ClientCredentials.UserName.UserName = "User123";
    client.ClientCredentials.ClientCertificate.SetCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindByThumbprint, "2342424234234");

    try
    {
        var result = client.ProcessAliveTest(new ProcessAliveTestType());
    }
    catch (Exception exc)
    {
        Console.WriteLine($"Error: {exc.Message}");
    }
}

Ich gehe jetzt mal davon aus das die Gegenstelle korrekt implementiert ist. Auf den WebService habe ich selbst leider keinen Einfluss und auch keine direkt Möglichkeit Details zuerfahren wie diesen implementiert ist.

*EDIT*

Ok Action habe ich gefunden. In der Refernce.cs steht folgendes:

[System.ServiceModel.OperationContractAttribute(Action= "", ReplyAction="*")]

Dort kann ich den Wert entsprechend meiner Wünsche anpassen. Wen jetzt noch das "to"-Feld geändert werden könnte. Wäre ich glücklich 😃

15.08.2016 - 09:41 Uhr

Hi,

ich versuche grade auf einen Webservice zuzugreifend er WS-Adressing erfodert. Ich habe die WSDL eingebunden und versuche mit einem simplen WSHttpBinding auf den Service zuzugreifen:

var binding = new WSHttpBinding(SecurityMode.Transport);
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;

Mein genertierter Request sieht dann in etwa so aus:

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
  <s:Header>
      <a:Action s:mustUnderstand="1"/>
      <a:MessageID>urn:uuid:85e88a4a-4569-4c90-b35c-e465c72f9925</a:MessageID>
      <a:ReplyTo>
        <a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
      </a:ReplyTo>
      <a:To s:mustUnderstand="1">https://EndPointServer123/services</a:To>
  </s:Header>
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <ProcessAliveTest xmlns="http://xmldefs......" />
  </s:Body>
</s:Envelope>

Jedoch hat der Server 2 Probleme mit dem Header des Requests.

  • unter a:To steht aktuell der von mir definierte Endpoint. Der Server hätte hier aber gern einen Link aller "ws://..."
  • a:Action wird leider nicht mit einem "http://xmldefs..." link gefüllt

Wie kann ich diese beiden Felder beeinflussen?

14.12.2015 - 10:04 Uhr

Hi,

ich habe hier eine Windows 10 App mit einer ListView diese sollte sich wie folgt verhalten:

  • Es soll sofort zum neusten hinzugefügten item gescrollt werden
  • Scrollt der Anwender aber bewusst in der Liste soll das automatische scrollen nicht aktiv sein
  • Scrollt der Anwender wieder zum Ende der Liste soll das Automatische Scrollen wieder aktiv werden

Da seit neusten ja Behavior offiziell untersützt werden wollte ich dies direkt benutzen. Zurzeit habe ich folgendes:

public sealed class AutoScrollToLastItemBehavior : Behavior<ListView>
    {
        private bool _collectionChangedSubscribed;

        protected override void OnAttached()
        {
            base.OnAttached();
            AssociatedObject.SelectionChanged += SelectionChanged;
            AssociatedObject.DataContextChanged += DataContextChanged;
        }

        protected override void OnDetaching()
        {
            base.OnDetaching();
            AssociatedObject.SelectionChanged -= SelectionChanged;
            AssociatedObject.DataContextChanged -= DataContextChanged;

            var collection = AssociatedObject.ItemsSource as INotifyCollectionChanged;
            if (collection == null || !_collectionChangedSubscribed) return;
            collection.CollectionChanged -= CollectionChanged;
            _collectionChangedSubscribed = false;
        }

        private void SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            ScrollToBottom();
        }

        private void CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
        {
            ScrollToBottom();
        }

        private void DataContextChanged(FrameworkElement sender, DataContextChangedEventArgs args)
        {
            var collection = AssociatedObject.ItemsSource as INotifyCollectionChanged;
            if (collection == null || _collectionChangedSubscribed) return;

            collection.CollectionChanged += CollectionChanged;
            _collectionChangedSubscribed = true;
        }

        private void ScrollToBottom()
        {
            var selectedIndex = AssociatedObject.Items?.Count - 1;

            if (!selectedIndex.HasValue || selectedIndex < 0)
                return;

            AssociatedObject.SelectedIndex = selectedIndex.Value;
            AssociatedObject.UpdateLayout();
            AssociatedObject.ScrollIntoView(AssociatedObject.SelectedItem);
        }
    }

Das funktioniert soweit auch super. Problem ist halt nur das ich einfach Punkte 2 und Punk 3 nicht abgebildet bekomme. Es finden sich x Beispiele zu diesem Thema im Netz z.b hier:

http://stackoverflow.com/questions/25800470/wpf-listbox-automatic-scrolling-start-and-stop-behavior

Problem ist schlicht und ergreifend das der ScrollViewer in den Universal-Apps diese Funktionen nicht unterstützen. Hat jemand evtl. eine Idee wie man das gut abbilden kann?

Ich habe noch ein kleines sample angehangen.

Gruß

17.08.2015 - 20:56 Uhr

Ohhhh vielen vielen Dank darauf wäre ich ja nie gekommen. Ich wusste auch garnicht das, das das Standard-Verhalten ist. Jetzt komme ich vorran. Danke nochmal.

Ich glaube btw. mit "Ja das ist das Standartverhalten. Wenn dir das nicht genügt kannst musst du was anders verwenden oder dir selber was schreiben." könnte man jeden Beitrag hier im Forum beantworten.

17.08.2015 - 16:59 Uhr

Das er bei Pause anhält erwarte ich auch 😃

Aber geh mal auf twitch.com und schau dir einen Live-Stream an. Dort findest du natürlich auch einen Pause-Button. Wenn den drückst hält das Video natürlich an. Klickst du nun auf Play starte das Video auch wieder. Nur halt an der Stelle wo der LiveStream grade ist.

Und genau das möchte ich auch. Zurzeit funktioniert es ja genauso nur das er das Video anscheinend cached und deshalb dort weiter spielt wo gestopt wird. Das möchte ich nun aber nicht wirklich. Ich möchte das beim drücken auf Play zu der aktuellen Stelle gesprungen wird und nicht bei der pausierten gestartet wird.

17.08.2015 - 16:38 Uhr

Hi,

ich verwende ein MediaElement um einen LiveStream wiederzugeben. Das Funktioniert soweit auch perfekt.

Mein Problem ist das beim pausieren des Stream und erneuten startens der Stream nicht mehr Live ist. Es scheint gecached zu sein oder ähnliches.

Kann ich dem MediaElement irgend wie beibiegen das er direkt wieder auf Live schaltet? Oder müsste ich die Funktion des Play-Buttons überschreiben und den Stream quasi zurücksetzen?

*EDIT*

Es ist btw. ein TwitchStream den ich per URL einbinden. Also über die API. Quasi so als wenn man Twitch über VLC gucken würde.

Gruß
Mystic

09.07.2015 - 15:35 Uhr

Was verstehst du in diesem Fall den als Dogma? Das ich das ganze nicht im Code-Behind der jeweilige Seite lösen möchte? Odas weil ich beim Seitenwechsel das ViewModel nicht neu instanziiere?

09.07.2015 - 14:05 Uhr

Ich werde mir das hier mal angucken:

Loading data in ViewModel asynchronously (with async and await) not working with databinding

Das sieht ganz nett aus. So kann ich das ganze direkt im ViewModel lösen.

(Problem ist nur das hier halt nicht auf das "Load" eingegangen wird. Da ich ja nicht ständig ne neue Instance des ViewModels erzeuge. Beim Besuch der Seite)

09.07.2015 - 12:27 Uhr

Hi,

ich behandle gerne soviel wie möglich im XAML. So geht es mir z.b auch beim Laden von Daten ins ViewModel. Typischer Fall: Seite wird geladen => ViewModel muss Daten Laden

Im Desktop-Bereich mache ich das über DataTrigger wie z.b hier:

<i:Interaction.Triggers>
        <i:EventTrigger EventName="Loaded">
            <i:InvokeCommandAction Command="{Binding Path=LoadServiceData}" />
        </i:EventTrigger>
    </i:Interaction.Triggers>

Dadurch muss ich im Code-Behind der Seite nicht eine einzige Zeile hinzufügen oder ähnliches. Leider wurde seitens MS dies schon WinRT nicht eingebaut. Das ganze ließt sich aber mit WinRTTriggers überbrücken.

Jetzt arbeite ich grade an einer UAP-App. Auch hier würde ich gerne ohne Code-Behind auskommen um die Daten zu laden. Nur leider läuft WinRTTriggers nicht unter UAP 😕.

hat evtl. jemand eine gute Idee wie man sowas evtl. anders abbilden kann? Im Endeffekt möchte ich nur beim Laden der Seite ein Command im ViewModel ausführen um einige Infos abzurufen.

Gruß
Mystic

15.03.2015 - 10:20 Uhr

Nach kürzen googeln:

http://stackoverflow.com/questions/27771332/winapi-wpf-set-system-cursor-only-for-application

Laut den Kommentaren scheint es zu funktionieren. Habe es jetzt nicht getestet.

07.01.2015 - 20:02 Uhr

Hi,

ich gucke mir grade ein paar Windows 8 News apps an. Hier als Beispiel "News Bento":

http://wscont1.apps.microsoft.com/winstore/1x/0a847a40-76b5-4746-915c-6630dbd37ec4/Screenshot.10754.1000002.jpg

Windows Central

http://wscont1.apps.microsoft.com/winstore/1x/1595dd65-c3f6-4bef-ba57-6cf71ad2128b/Screenshot.301577.1000000.jpg

The Guardian

http://i.guim.co.uk/static/w-620/h--/q-95/sys-images/Guardian/Pix/pictures/2012/12/1/1354385543231/bing-daily.jpg

Wie man sieht wird dort z.b bei einer Liste von News eine News mit Bild dargestellt und dann 2 ohne und dann wieder von vorn. Nur wie kann man sowas per Style bewerkstelligen?

Gruß
Alex

06.10.2014 - 09:40 Uhr

Darauf bin ich auch schon gestoßen. Jedoch benötigt der Builder adminrechte. Was schade wäre da die Anwendung bis jetzt keine benötigt 😕

Zitat von: Installing/Registering Custom Cultures
It is worth noting, however, that as the Register method writes to the Registry and to the system's Globalization folder, any code that uses it requires administrator rights to execute

06.10.2014 - 08:25 Uhr

Guten Tag,

ich möchte aus fun in eine meiner Anwendungen klingonisch einbauen. Als ich gelesen habe das klingonisch in ISO 639-2 und ISO 639-3 aufgenommen wurde dachte ich das wäre recht banal das ist leider nicht so 😕

Am liebsten würde ich ganz normal ne "translation.tlh.resx" anlegen und im Code dann einfache die Culture auf "tlh" setzen. Das Funktioniert leider nicht wirklich.

Wie kann ich den ganz simple ne Fake Sprache benutzen? Von mir aus kann klingonisch ja alle anderen Culture-Eigenschaften vom englischen erben. geht ja nur darum das ich es auswählen kann 😃

Gruß
Alex

03.08.2014 - 19:56 Uhr

Das tut https://github.com/Fody/Costura auch ohne irgend etwas einzustellen oder ähnliches. Welchen Vorteil bietet diese Methode?

Weil wenn ich z.b bei https://libz.codeplex.com/ die Tabelle angucke. Ist ILMerge so ziehmlich das schlechteste was man nehmen kann.

Aus welchen Grund sollte man diese Variante benutzen?

03.08.2014 - 13:21 Uhr

http://research.microsoft.com/apps/mobile/showpage.aspx?page=/en-us/people/mbarnett/ilmerge.aspx

"ILMerge is not able to merge WPF assemblies. They contain resources with encoded assembly identities. ILMerge is unable to deserialize the resources, modify the assembly identities, and then re-serialize them. Sorry!"

03.08.2014 - 10:57 Uhr

Hi,

gibt es einen schöne Möglichkeit seine satellite assembly (in meinem Fall Übersetzungen) in die Anwendung mit ein zu bauen? Für alle anderen assemblies benutze ich:

https://github.com/Fody/Costura

Dadurch wurde meine Anwendung von einigen DLL's "befreit" und sie ist quasi eine Single-File Anwendung das einzige was halt noch zum totalen Glück fehlt ist das die ganzen Ordner und DLL's der Übersetzungen verschwinden.

Das Projekt hat jedoch einen ungefixten Bug der mein Problem beschreibt:

https://github.com/Fody/Costura/issues/61

Gibt es evtl. eine andere Möglichkeit dies zu tun?

Gruß
Mystic

28.07.2014 - 12:37 Uhr

Ich habe die Funktion die ich aufrufen möchte (eine AD-Abfrage) abgeändert und den Part der lange dauert in einen Thread ausgelagert und dann dem Token zugewiesen das er bei Anfrage den Thread abbrechen soll.

Spricht etwas gegen solche ein Implementierung?

(Mal grob vereinfacht)

var thGetInfos = new Thread(DoSomthing())
                       
using (cancellationToken.Register(thGetInfos.Abort))
{
    thGetInfos.Start();
    thGetInfos.Join();
}

Also funktionieren tut es schon mal wunderbar 😃

25.07.2014 - 16:07 Uhr

Heho,

also die Erweiterung "WithCancellation" ist perfekt und tut ihren Dienst 😃

Problem ist nur das die Aufgabe nicht wirklich geschlossen wird. Beispiel:

Starte ich eine Such nach etwas was einen weile dauert und ich breche den Task ab funktioniert erst mal alles wie gewünscht. Schließe ich jedoch jetzt die Anwendung fliegt mir folgendes entgegen:

"Zusätzliche Informationen: Es wurde versucht, einen RCW freizugeben, der derzeit benutzt wird. Der RCW wird im aktiven Thread oder einem anderen Thread verwendet. Der Versuch, einen RCW freizugeben, der gerade verwendet wird, kann Datenbeschädigung oder -verlust zur Folge haben."

Das kenne ich noch aus guten alten Thread-Zeiten wenn man einen Thread nicht geschlossen hat bevor man die Anwendung geschlossen hat (oder sie hat als Backround-Thread definiert hat).

Daraus Schlussfolgere ich das der Task im Hintergrund noch arbeitet. Genauso wie die CPU-Last nicht abnimmt 😦

*edit*

gibt die Funktion btw auch direkt von MS 😃

ThreadingTools.WithCancellation(T) Method (Task(T), CancellationToken)

Gruß
Alex

25.07.2014 - 15:21 Uhr

Hi,

ich habe hier eine Anwendung. Dort werden einige Aufgaben per TPL abgearbeitet. All diese Aufgaben ließen sich bis jetzt per CancellationToken abbrechen. Jedoch muss ich jetzt einen Funktion einbauen die kein Async untersützt (PrincipalSearcher) diese lässt sich daher auch schlecht abbrechen.

Bis jetzt habe ich ein CancellationToken was ich an alle gestarteten Task übergebe habe. Wird jetzt nun z.b auf "Stop" gedrückt rufe ich CancellationToken.Cancel() auf und die Task brechen alle korrekt ab. Nur der Task mit der Suche leider nicht. Soweit auch logisch.

Nur ejtzt die Frage wie brechen ich solche Funktionen ab? Ich könnte natürlich einen Task bauen in dem die Funktion in einem Thread aufgerufen wird der dann beim Abbruch durch den CancellationToken einfach gekillt wird. Aber das klinkt irgend wie etwas übertrieben. Wie ist dann die best practice?

Gruß
Alex

21.07.2014 - 12:52 Uhr

Sollte das DataTemplate nicht eigentlich für den Typ KeyValuaPair definiert sein?
Christian

Stimmt 😕. Aber das ergibt die selben Fehler wie bei Dictionary. Auch bei dem Post im Link bekomme ich diesen Fehler.

18.07.2014 - 09:10 Uhr

Habe ich in dem Fall ja sogar 😃. Der Designer selbst zeigt ja auch alles super an. In der XAML wird halt nur das Binding unterstrichen ( zb. "cant resolve symbol 'Key'").

Ich habe dann versucht deinen Typ anzugeben. Das funktioniert sogar soweit das beim Binding der Fehler weg ist und auch das IntelliSense funktioniert. Jetzt meckert er nur noch am Typ direkt (siehe Anhang).

coll sieht bei mir dann so aus:

xmlns:coll="clr-namespace:System.Collections.Generic;assembly=mscorlib"
17.07.2014 - 20:28 Uhr

Nein gibt kein Designerfehler und auch keine Databindingfehler. Auch im Programm selbst läuft alles. Ist mehr klein kram der mich nur nervt 😃

Problem ist nur das der Style in ner anderen Datei ist wie das ItemsControl und der Style nicht weiß welcher Typ gebunden wird. Daher funktioniert z.b auch das InteleSense nicht. Das sollte halt funktionieren wenn man den DataType im Style angibt wie zb sowas:

<DataTemplate DataType="{x:Type local:Foo}">

Nur ich weiß halt nicht wie man sowas für "Dictionary<string,string>" schreibt.

17.07.2014 - 16:01 Uhr

Hi,

ich haben folgenden Style für ein ItemsControl geschrieben (hier mal nur der Setter der "Probleme" macht):

                
<Setter Property="ItemTemplate">
    <Setter.Value>
        <DataTemplate>
            <StackPanel>
                <Label Content="{Binding Path=Key}" />
                <TextBox Text="{Binding Path=Value, Mode=OneWay}" />
            </StackPanel>
        </DataTemplate>
    </Setter.Value>
</Setter>

(ich habe alles unnötige mal entfernt)

Problem ist der Designer meckert das er "Key" und "Value" nicht auflösen kann. Was ja soweit auch korrekt ist da im Style ja noch nicht bekannt ist welches Objekt später gebunden wird. Da ich das aber weiß würde ich das gern mit "DataType" dem DataTemplate mitteilen.

Soweit auch kein Problem jedoch habe ich keine Ahnung wie ich das schreiben müsste bei "Dictionary<string, string>".

Hat das schon mal jemand gemacht?

Gruß
Mystic

04.07.2014 - 14:56 Uhr
var myListe = new List<string> {"Das", "ist", "das", "Haus", "vom", "Nikolaus"};

Console.WriteLine(myListe.Aggregate(String.Empty, (current, word) => current + (word + " ")).TrimEnd() + ".");
Console.ReadKey();

Ich war gerade so frei ^^

17.06.2014 - 21:58 Uhr

@Abt

Der Dienst ermittelt ganze Zeit Daten. Das kann ich nicht in die App packen da die ja nicht die ganze Zeit läuft. Da die ganzen Daten auf den Client liegen, und da auch bleiben, sollen gibt fällt ein externe Server weg (wieso auch den Umweg übers Netzwerk?)

@LatinChriz

Zurzeit spricht die Anwendung über IpcChannel-Klasse mit dem Dienst. Ich hätte kein Problem WCF in den Service zu bauen. Und nach kurzen googeln habe ich auch schon was gefunden:

Vorgehensweise: Hosten eines WCF-Diensts in einem verwalteten Windows-Dienst

Genau das sollte mein Problem lösen. So kann der Dienst so weiter Arbeiten wie gewohnt. Ich baue ihn nur auf WCF um und schmeiße das ganze IpcChannel zeug raus.

Propiere ich das mal aus Morgen 😃

17.06.2014 - 18:35 Uhr

Ich habe doch nun bereits 2x erwähnt das ich weiß das IPC nicht möglich ist. Aber danke für die Information.

Daher frag ich ja wie ich das Problem am besten lösen kann.

17.06.2014 - 15:54 Uhr

Naja ich habe eine Anwendung die auf einen normalen Windows 8 laufen soll. Auf dem selben Client läuft ein Dienst der Informationen verarbeitet. Die Anwendung selbst zeigt nur Informationen an die der Dienst ihr per IPC liefert. Sprich der Informationsfluss ist nur lokal.

Ich möchte jetzt eine App schreiben die auch auf genau diesen Client läuft. Um die Informationen halt in der App anzeigt um es auf einen Tablet einfacher zu machen.

Die Frage ist jetzt halt wie bekomme ich die Infos zur App. Die App kann kein IPC daher fällt es logischerweise schon raus. Ich würde halt nur ungern nen IIS oder sowas aufsetzen nur für meine App.

Daher die Frage wie ich das am besten lösen kann.

17.06.2014 - 15:30 Uhr

Sprich ich müsste auf den Client eine Umgebung aufsetzen nur um meinen WCF-Service zu hosten?

*EDIT*

Oder könnte ich den vom Dienst aus Hosten?

17.06.2014 - 15:24 Uhr

Guten Tag,

ich habe hier eine WPF-Anwendung. Diese greift mittels IPC auf einen Dienst (lokal) zu der der Anwendung alle Informationen liefert zur Ausgabe. Sprich die Anwendung ist nur zur Darstellung der Informationen da und die ganze Logik liegt beim Dienst.

Jetzt würde ich gern eine Windows 8 App bauen die die selbe Aufgabe wie die Anwendung erfüllt nur halt als App. Problem ist nur das ich von der App aus nicht mit dem Dienst über IPC kommunizieren kann (da es die Funktionen im WinRT schlicht nicht gibt).

Die Frage ist jetzt bekomme ich es jetzt am besten hin die App mit Infos zu füttern die der Dienst ermittelt?

Gruß
Mystic

17.06.2014 - 15:12 Uhr

Mit "geht nicht" meiner er wohl das RenderTargetBitmap.RenderAsync methods einen minimun client support für Windows 8.1 hat.

Aber ohne das jetzt weiter Untersucht zu haben ist RenderAsync die gleiche Funktion einfach in einen Task gekapselt . Das wird die Funktion aber nicht schneller oder langsamer (naja evtl. etwas durch den Overhead) sondern dadurch lässt sie sich einfach besser bedienen wenn mit await arbeiten möchtest.

Hast du mal gemessen was lange dauert? Ist es wirklich das "Render" oder das umwandeln in Jpeg?

13.06.2014 - 23:29 Uhr

Wenn du keinen Auswärtssupport zu WP7 hast ist das doch egal. 8.1 wird ein Update für JEDES WP8 Phone. Sprich kannst du ruhig auf 8.1 Migrieren zumal du dadurch auch en Support zu Windows Apps quasi eingebaut hast 😃

8.1 sollte auch bald raus kommen. Also von dahher.

10.06.2014 - 17:27 Uhr

Auf der PNG zu zeichen ist auch noch weniger das Problem. Die Karte auf Basis der PNG ist soweit ja auch komplett das zeichnen nicht mal zwingen nötig ist. Das Zoomen und Co. ist dabei auch nicht das problem. Nur verpixelt eine PNG ja auch recht fix (Das Firmengeländer ist etwas größer) da wäre der Vorteil bei den Kartendiensten.

Aber auch wenn. Die PNG muss ich nicht mal zwingend ändern da dort alles enthalten ist. Ich brauche da eher etwa sowas wie POIs da ich sonst auf Suchen wie "Kantine" ja nicht reagieren kann. Ich hatte mir halt gedacht das es für sowas evtl. APIs/Projecte gibt. Sprich das ich sage auf Bereich X ist die Kantine so das ich ne Suche realisieren kann oder z.b auf einen Click reagieren kann. Quasi ne art Matrix.

10.06.2014 - 13:56 Uhr

Guten Tag,

erst mal vorne weg ich bin mir nicht ganz sicher in welches Forum ich das schreiben sollte. Aber da es sich um ein Windows 8 App dreht dachte ich bin ich hier nicht ganz falsch 😃

Aber mal von vorne. Ich möchte Art Karte für ein Firmengelände schreiben. Jedoch bin ich mir bei der Umsetzung einfach nicht sicher. Das ganze muss Offline-Funktionieren.

Die Ansprüche sind eigentlich auch nicht wirklich hoch. Ich möchte eigentlich nur die Karte anzeigen und evtl. ein paar POIs einblenden und ggf. eine kleine Suche auf Basis dieser POIs.

Die Frage ist wie realisieren. Ich habe lediglich eine PNG der Karte. Diese halt recht statisch was Zoomen usw. angeht. Bing (oder Google oder OpenStreetmaps gehen auch) könnte ich vom Prinzip einsetzen da dort eigentlich alles ersichtlich ist jedoch funktioniert dies nicht offline.

Hat jemand schon mal etwas ähnliches gemacht und kennt evtl. jemand ein Projekt was mir hier helfen könnte?

Falls nur die PNG als Basis funktioniert. Gibt es evtl. ein Löstung für ein Art PIOs auf einem Raste?

Möchte ungern das Rad neu erfinden weil ich der Meinung bin das nicht nicht der erste bin der sowas gemacht hat 😃

Gruß
Alex

09.05.2014 - 09:03 Uhr

Heho,

kleine Frage zu ConfigureAwait. Ich habe mir das dazu angesehen:

Video: Consider .ConfigureAwait(false) in libraries

Wenn ich das richtig verstehe kann ich mit ConfigureAwait verhindern das sich der SyncContext gemerkt wird und die Funktion nach dem await wieder zu diesem SyncContext zurückkehrt. Sprich die Funktion läuft mit ConfigureAwait(false) einfach im selben Context wo sie auch aufgerufen wird.

Könnte man dann nicht sagen das man jede Funktion die Unterhalb der Hauptfunktion aufgerufen wird mit ConfigureAwait(false) aufruft werden sollte? Weil ein Beispiel:

Ich habe eine Download-Funktion die von mir aus bei einem Button-Click aufgerufen wird (sprich im UI-Context läuft) und einen String zurück gibt. Diese wird ganz normal nur mit Await aufgerufen. Intern benutzt diese Funktion aber einige Async Funktionen wie z.b OpenReadTaskAsync und ein paar selbst geschriebene.

Diese ganzen Funktionen "müsste" man doch eigentlich mit ConfigureAwait(false) aufrufen weil ja eigentlich egal ist in welchen Context sie laufen weil die Hauptfunktion ja wieder in den SyncContext der GUI springt wenn sie fertig ist.

Soweit korrekt? Weil irgend wie sehe ich ConfigureAwait relativ selten in MS-Sampels.

Gruß
Alex

25.04.2014 - 12:34 Uhr

Ja andere Async Funktionen sind auch wesentlich komplexer aufgebaut. Den "CancellationToken"-Part kannst ja bei deinen Funktionen nocht erweitern 😃

Wieso hast du eigentlich in deiner "ExecuteAsync" den Part für SetException nicht mit rein genommen? Vom Prinzip kannst es da ja so machen wie im.net result auf "null" setzen und action einfach ausführen. Und wieso hast du extra einen Variable für Task.Factory angelegt?

25.04.2014 - 11:27 Uhr

Prinzipiell erstelle ich nur synchrone Methoden und optional asynchrone Methoden. Das ist auch der Weg von .NET - nicht umgekehrt.

Ich habe mal nachgesehen. Stimmt .net macht es genauso:

referencesource.microsoft.com: DBConnection.cs, Methode OpenAsync

Ansonsten wird Dir immer ein Overhead aufgezwungen was nicht sinnvoll ist.

Stimmt sonst würde er ja beim Synchronen Aufruf die ganze TPL mit schleifen obwohl das total unnötig ist.

Also fassen wir zusammen. Komplett in TPL schreiben und dann runter brechen ist ok sofern der Code auch komplett async unterstützt. Sonst sollte man normal sync schreiben und async anbieten über entsprechende pattern.

25.04.2014 - 11:07 Uhr

Hi,

mal ne kleine Frage. Ich schreibe gerade eine library. Diese hat auch einige Async Funktionen. Jedoch wollte ich nach .net Vorbild auch einen passenden synchrone-Funktion anbieten. Bis jetzt mache ich das wie folgt:

private String Test()
{
    return TestAsync().Result;
}

private async Task<String> TestAsync()
{
    await Task.Delay(5000);

    return "sdfsdf";
}

Das Funktioniert soweit auch. Jedoch habe ich mich gefragt ob es für diesen Fall nicht einen "best practice" gibt. Wie macht ihr das?

Gruß
Mystic

22.12.2013 - 15:01 Uhr

War ansich ganz einfach:

Hier die Liste:


        <!-- Liste der ChildNotes-->
        <collections:ArrayList x:Key="ConnectionChilds">
            <classes:TreeItemObject ItemsSourcePath="Child1" />
            <classes:TreeItemObject ItemsSourcePath="Child2" />
            <classes:TreeItemObject ItemsSourcePath="Child3" />
        </collections:ArrayList>

Hier da Template für die Anzeige:


        <!-- Template für Connections-Childs-->
        <DataTemplate DataType="{x:Type classes:TreeItemObject}">
            <TextBlock Margin="5,0" Text="{Binding Path=ItemsSourcePath}"/>
        </DataTemplate>


        <!-- Template für Connections-Note -->
        <HierarchicalDataTemplate DataType="{x:Type classes:Connection}" ItemsSource="{Binding Source={StaticResource ConnectionChilds}}" >
            <TextBlock Text="{Binding DisplayName}" />
        </HierarchicalDataTemplate>

TreeItemObject sieht so aus:

   public class TreeItemObject
    {
        public string ItemsSourcePath { get; set; }
    }

Jetzt habe ich wunderbar 3 Childs unter meinen Verbindungen. Wenn ich jetzt noch hin bekommen würde das ich das DataContex vom Parent (also die Connection) auf die Childs (meine erzeugen Notes) bekommen würde wäre ich überglücklich ^^. Da das TreeView leider nur das Object liefert bei SelectedItem, das TreeViewItem wäre mir leiber 😕

Im DataTemplate kann ich wunderbar so auf den DataContex zugreifen:

<TextBlock Margin="5,0" Text="{Binding Path=DataContext, RelativeSource={RelativeSource AncestorLevel=2, AncestorType=TreeViewItem}}"/>

Nur brauch ich es quasi auf dem TreeItemObject.

12.12.2013 - 15:59 Uhr

Den Hinweis auf die CompositeCollection bist du scheinbar auch noch nicht gefolgt. Denn genau mit dem Ding kannst du im Xaml statische Elemente erzeugen und mit dynamischen Listen verknütten. Ob jetzt Liste, oder Tree ist total egal, ist eh alles das Gleiche...

Leider nicht da eine CompositeCollection nicht in einem HierarchialDataTemplate benutzt werden kann.

Hier hat ein das selbe Problem gehabt wie ich:

http://social.msdn.microsoft.com/Forums/vstudio/en-US/b61a8bc9-ebae-4b9a-a7e6-c6849641f7cc/static-treeviewitems-in-a-bound-treeviewitem?forum=wpf

Er hat zwar an den Objecten jeweil noch Items gebunden. Das könnte man in meinen Fall aber weglassen. Nur leider ist seine Seite down :'(

12.12.2013 - 14:46 Uhr

Richtig. Ich habe ne statische (also unveränderliche) Auflistung von Knoten. Diese habe ich auch komplett in XAML deklariert. Einer dieser Knoten sollte aber auf Basis einer Auflistung Childs bekommen. Was auch alles noch wunderbar in XAML und ohne ViewModel funktioniert hat. Nun sollte genau jeder dieser dynamisch erstellen Knoten zwei feste knoten bekommen. Wo ich dann wie gesagt an an Grenze gestoßen bin.

Was auch der Grund meiner Frage hier im Forum war.

Und was bitte sollen solche Aussagen wie "Wie man Auflistungen erstellt und wie man Elemente hinzufügt, sollte bekannt sein und ist kein Thema für das Forum sondern für die Doku." eigentlich? Ich habe nach nichts der gleichen gefragt.

12.12.2013 - 14:27 Uhr

Mir ist schon bewusst was MVVM ist. Geschweige denn was Klassen sind und was statisch bedeutet...

Ich hatte ja oben auch schon erwähnt das ich kein ViewModel gemacht hatte weil ich es in dem Fall (da kleines Projekt) nicht in Betracht gezogen hatte. Was auch der Grund ist wieso so einen "Konstruktionen" entstanden ist. Das, dass im Endeffekt ein Falsche Entscheidung war sei mal dahingestellt.

Und "passiert" sollte "basiert" heißen. Ist aber glaube ich der Rechtschreibkorrektur von FireFox zum Opfer gefallen.

Das einzige was ich eben gefragt hatte war wie ich am besten ein ViewModel für die TreeView zusammenbaue, welches einen festen Aufbau (was übrigens das was was ich mit statisch meinte...) hat und wo nur einige Knoten auf Klassen basieren, erstelle.

12.12.2013 - 13:38 Uhr

Ok du hast mich überzeugt dann baue ich ein View-Model für die Seite 😃. Ich weiß nur noch nicht genau wie 😕

Im Prinzip habe ich einen Klasse die aus einer XML-Daten zieht. Diese haben ich zwar in Klassen aufgeteilt jedoch decken diese sich nicht direkt mit der UI sondern eher nach dem logischen Aufbau der Daten.

Daher habe ich die TreeView halt recht statisch gebaut. Und nur da wo ich Childs auf Basis einer Liste aufbauen muss habe ich das Binding benutzt. Das funktioniert ja auch wunderbar. NUr möchte ich halt ungern meine Logische Klasse um UI Elemente erweitern.

Eigenes "TabControl" mit TreeView erstellen, kompatibel mit Visual Studio Designer

Geht schon grob in die Richtung. Ich habe auch ein ContentPresenter der auf SelectedItem reagiert. Da ich wie gesagt keine Klassen dafür habe benutze ich die Tag Eigenschafte des Items dort steht dann so was drin wie "Forms.FormName" ein Converter wandelt das dann in das UserControl mit dem namen "FormName" um es wird dadurch angezeigt.

Jetzt im Nachhinein ließt sich das echt etwas dreckig. Nur wie müsste ich den ein ViewModel für einen TreeView aufbauen wenn die kaum auf Klassen passiert sondern statisch ist und nur ab und an ne Klasse als Basis hat?

11.12.2013 - 09:28 Uhr

Ich habe in dem Fall kein kein ViewModel. Wäre bei dem Projekt bissel overkill. Ich habe noch andere Notes in der TreeView die sind alle Static. Wenn das nicht so wäre hätte ich mir wohl auch ein ViewModel gebaut.

Mir möchte es irgend wie nicht in den Kopf das es nicht irgend wie möglich einfach über XAML im HierarchicalDataTemplate einfach noch die zwei statisches Notes zu definieren 😕

09.12.2013 - 16:49 Uhr

Das muss doch irgend wie über XAML gehen.

Wie gesagt und die Child-Notes habe nichts mit der Klasse zutun. Sie dienen nur zur besseren Navigation.

09.12.2013 - 14:04 Uhr

Nicht ganz. Ganz simple eigentlich. Ich habe einen "Connection" Klasse. Diese beinhaltet ein paar Eigenschaften. Dann gibt es einen ObservableCollection die hält alle Connection-Klassen. Diese ist im Beispiel an das ListViewItem gebunden.

Dadurch entsteht jetzt ein Note mit jeweils einer Childnote für eine Verbindung. Soweit auch alles super.

Jetzt würde ich unter jeder Verbindung einfach gerne zwei Childnotes anlegen z.b "Childnote1", "Childnote2". Das quasi jeder Verbindung einfach zwei fest, unabhängig vor der Klasse, zwei Childnotes bekommt. Diese sollen später für die Bedienung da sein.

08.12.2013 - 11:27 Uhr

Hi,

ich habe hier ein TreeView:


<TreeView>
    <TreeViewItem Header="General" Tag="Forms.General" />
    <TreeViewItem Header="Connections" ItemsSource="{Binding Connections}" />
</TreeView>

So sieht mein HierarchicalDataTemplate dazu aus


<HierarchicalDataTemplate DataType="{x:Type classes:Connection}">
    <TextBlock Text="{Binding DisplayName}" />
</HierarchicalDataTemplate>

Das funktioniert wunderbar. Jetzt das Problem. Ich hätte gern unter jeder Note zwei feste Notes. Die nicht auf Eigenschaften oder so basieren.

Das heißt im Prinzip soll es so aussehen das ich ne "General"-Note habe ohne Childs. Dann halt eine "Connections"-Note. Diese hat aber x "Connection"-Notes. Und jeder dieser "Connection"-Notes soll halt einfach zwei feste Childs bekommen.

Gruß
Mystic

31.10.2013 - 14:25 Uhr

Hi,

ich habe hier ein wunderschönes icon in XAML. Diese ist auf 76,76 ausgelegt.

<Canvas Margin="4" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Name="appbar_tv_remote" Width="76" Height="76" Clip="F1 M 0,0L 76,0L 76,76L 0,76L 0,0">
                        <Path Width="29.7682" Height="47.5" Canvas.Left="23.1159" Canvas.Top="14.25" Stretch="Fill" Fill="#FF000000" Data="F1 M 38,26.9167C 39.7489,26.9167 41.1667,28.3344 41.1667,30.0833L 47.5,30.0833C 49.2489,30.0833 50.6667,31.5011 50.6667,33.25L 50.6666,58.5834C 50.6666,60.3322 49.2489,61.75 47.5,61.75L 28.5,61.75C 26.7511,61.75 25.3333,60.3322 25.3333,58.5834L 25.3333,33.25C 25.3333,31.5011 26.7511,30.0833 28.5,30.0833L 34.8333,30.0833C 34.8333,28.3344 36.2511,26.9167 38,26.9167 Z M 38,17.4167C 32.5252,17.4167 27.8616,20.8901 26.0927,25.7534L 23.1159,24.6709C 25.327,18.5917 31.1565,14.25 38,14.25C 44.8435,14.25 50.6729,18.5917 52.8841,24.6709L 49.9073,25.7534C 48.1384,20.8901 43.4748,17.4167 38,17.4167 Z M 38,23.75C 35.2626,23.75 32.9308,25.4867 32.0463,27.9184L 29.0695,26.8359C 30.3962,23.1884 33.8939,20.5834 38,20.5834C 42.1061,20.5834 45.6038,23.1884 46.9304,26.8359L 43.9536,27.9184C 43.0692,25.4867 40.7374,23.75 38,23.75 Z M 30.875,39.5834C 29.5633,39.5834 28.5,40.6467 28.5,41.9584C 28.5,43.27 29.5633,44.3334 30.875,44.3334C 32.1867,44.3334 33.25,43.27 33.25,41.9584C 33.25,40.6467 32.1867,39.5834 30.875,39.5834 Z M 37.9999,39.5834C 36.6882,39.5834 35.6249,40.6468 35.6249,41.9584C 35.6249,43.2701 36.6882,44.3334 37.9999,44.3334C 39.3116,44.3334 40.3749,43.2701 40.3749,41.9584C 40.3749,40.6468 39.3116,39.5834 37.9999,39.5834 Z M 45.1249,39.5834C 43.8132,39.5834 42.7499,40.6467 42.7499,41.9584C 42.7499,43.2701 43.8132,44.3334 45.1249,44.3334C 46.4366,44.3334 47.4999,43.2701 47.4999,41.9584C 47.4999,40.6467 46.4366,39.5834 45.1249,39.5834 Z M 30.875,45.9167C 29.5633,45.9167 28.5,46.98 28.5,48.2917C 28.5,49.6034 29.5633,50.6667 30.875,50.6667C 32.1866,50.6667 33.25,49.6034 33.25,48.2917C 33.25,46.98 32.1866,45.9167 30.875,45.9167 Z M 37.9999,45.9167C 36.6883,45.9167 35.6249,46.98 35.6249,48.2917C 35.6249,49.6034 36.6883,50.6667 37.9999,50.6667C 39.3116,50.6667 40.3749,49.6034 40.3749,48.2917C 40.3749,46.98 39.3116,45.9167 37.9999,45.9167 Z M 45.125,45.9167C 43.8133,45.9167 42.75,46.98 42.75,48.2917C 42.75,49.6034 43.8133,50.6667 45.125,50.6667C 46.4366,50.6667 47.5,49.6034 47.5,48.2917C 47.5,46.98 46.4366,45.9167 45.125,45.9167 Z M 30.875,52.2501C 29.5633,52.2501 28.5,53.3134 28.5,54.6251C 28.5,55.9367 29.5633,57.0001 30.875,57.0001C 32.1866,57.0001 33.25,55.9367 33.25,54.6251C 33.25,53.3134 32.1866,52.2501 30.875,52.2501 Z M 38,52.2501C 36.6883,52.2501 35.625,53.3134 35.625,54.6251C 35.625,55.9367 36.6883,57.0001 38,57.0001C 39.3116,57.0001 40.375,55.9367 40.375,54.6251C 40.375,53.3134 39.3116,52.2501 38,52.2501 Z M 45.125,52.25C 43.8133,52.25 42.75,53.3133 42.75,54.625C 42.75,55.9367 43.8133,57 45.125,57C 46.4367,57 47.5,55.9367 47.5,54.625C 47.5,53.3133 46.4367,52.25 45.125,52.25 Z M 45.9166,34.8334L 42.75,34.8334C 41.8755,34.8334 41.1666,35.5422 41.1666,36.4167C 41.1666,37.2911 41.8755,38 42.75,38L 45.9166,38C 46.7911,38 47.5,37.2911 47.5,36.4167C 47.5,35.5422 46.7911,34.8334 45.9166,34.8334 Z M 38,34.8334L 30.0833,34.8334C 29.2089,34.8334 28.5,35.5422 28.5,36.4167C 28.5,37.2911 29.2089,38 30.0833,38L 38,38C 38.8744,38 39.5833,37.2911 39.5833,36.4167C 39.5833,35.5422 38.8744,34.8334 38,34.8334 Z "/>
                    </Canvas>

Das ganze würde ich gern Scalieren z.b auf 150px. Mit einer ViewBox kann ich den Path wunderbar auf 150px bekomme nur dann fehlt mir der richtige Abstand und die Zentrierung.

Wie bekomme ich das ganze am schönsten hin?

Gruß
Mystic

30.08.2013 - 11:03 Uhr

Guten Tag,

ich habe ein kleines Performance Problem.

Ich habe eine Windows Phone App mit einem "Pivot"-Control. Die Seiten werden Dynamisch geladen. Und zwar werden dort "Senderlisten" angezeigt. Sprich jede Pivot-Seite enthält eine Senderliste und die darin enthaltenen Sender. Das habe ich so gestaltet damit man mit einen Wisch zwischen den Senderlisten springen kann.

Das Funktioniert auch alles Wunderbar. Nur habe ich halt nicht mit Extrem-Usern gerechnet. Wenn jetzt jemand 200 Senderlisten hat (wieso auch immer, Normal sind eigentlich grob 10). Wird das ganze EXTREM langsam. Nicht in der Bedienung sondern beim Laden der Seite. Das hat auch weniger mit meinen Daten zu tun. Sondern viel mehr mit dem Pivot an sich. Denn es tritt beim Laden sowie beim verlassen der Seite auf.

Das lässt sich auch ganz einfach Simulieren indem man eine Seite mit einem Pivot-Control erstellt und als Itemsource einen String-Liste mit 200 Einträgen angibt.

Mir ist durchaus bewusst das 200 Einträge für ein Pivot auch Sinn frei sind. Der User hat auch die Möglichkeit über eine Jumplist besser in der Liste zu Navigieren.

Die Frage ist nun wie bekommen ich das gleiche Feeling hin ohne eine Einschränkung auf die Anzahl der Senderliste zu machen? Mir geht es dabei gerade um das einfach wischen von Senderliste zu Senderliste.

Gruß
Mystic

22.08.2013 - 15:31 Uhr

Silverlight (aka Windows Phone 7) untersützt da aber nur "Default" und "Explizit" 😦