Möchtest du eigentlich Base255 oder Base256 als Eingangsdaten?
PS: WW (als Base23) entspricht dezimal 22*23+22 = 528. Und das entspricht weder [2,11] in Base255 (= 521) noch in Base256 (= 523).
Edit:
Und auch dein bisheriger Umrechnungscode erscheint mir fehlerhaft (bes. die while
-Schleife sowie das nirgendwo gesetzte carry
!?). Schau mal in Horner-Schema: Umwandlung zwischen verschiedenen Zahlensystemen.
Hallo und willkommen,
ist das eines deiner ersten Projekte mit WPF? Und kennst bzw. verwendest du schon MVVM (s. [Artikel] MVVM und DataBinding)?
Ein gutes Beispiel mit MVVM für die Navigation zwischen verschiedenen Seiten ist Navigation mit WPF und MVVM. Als MVVM-Framework verwendet es MvvmLight Framework, aber du kannst auch ein anderes, wie das bekannte MVVM-Toolkit (als Teil des .NET Community Toolkit) verwenden, s.a. Einführung in das MVVM-Toolkit (teilweise heißen die Klassen und Methoden dann dort anders).
Und bzgl.
Ich hab es mit einem Frame probiert, aber dann konnte ich meine Buttons nicht mehr betätigen.
Dazu solltest du uns den betreffenden Code zeigen.
Hallo und willkommen,
du solltest dazu geschrieben haben, daß es sich um C#-Code für Unity handelt.
Was mir auffällt:
Es wird bisher nirgendwo NextLevel()
aufgerufen. Du mußt in der Update
-Methode, genauso wie für die bisherige Button-Abfrage, den Button für "NextLevel" abfragen.
Ich bin jedoch kein Unity-Experte und weiß z.B. nicht, was genau gameObject
dort bedeutet.
PS: Üblicherweise setzt man bei solchen Projekten endliche Zustandsautomaten (finite state machines) ein. Als Beispiel für Unity habe ich Simple Finite State Machine for Unity (C#) gefunden.
Und wenn die übergebenen Parameter xPos
/ yPos
die relative Position angeben sollen, dann noch die Werte dazuaddieren:
f3.Location = new Point(rect.X + xPos, rect.Y + yPos);
Schau dir die Fehlermeldungen an (und vom Visual Studio aus kannst du mit F1 direkt die Dokumentation im Browser aufrufen oder benutze [Hinweis] Syntaxfehler selbst lösen (Compilerfehlermeldungen)).
In C# müssen alle Methoden innerhalb einer Klasse (oder Struktur) liegen, es gibt keine freien Funktionen (wie z.B. in C oder C++).
Hallo,
mittels Main main = new Main()
erstellt du eine neue (aber unsichtbare) Form
-Klasse und beschreibst dessen TextBox
. Du benötigst entweder eine Referenz auf die existierende Form
oder aber noch besser, du verwendest ein Ereignis dafür: [FAQ] Eigenen Event definieren / Information zu Events (Ereignis/Ereignisse)
Ich habe hierfür auch extra einen Artikel geschrieben: Kommunikation von 2 Forms (gilt auch für Form-Klasse-Kommunikation)
Wie Abt geschrieben hat, verwende ein Event dafür, s. [FAQ] Eigenen Event definieren / Information zu Events (Ereignis/Ereignisse).
Und da der Aufruf aus einem Thread erfolgt, mußt du UI-Ausgaben synchronisieren: [FAQ] Controls von Thread aktualisieren lassen (Control.Invoke/Dispatcher.Invoke)
Du solltest, statt mit Threads zu arbeiten, dich auch mal über asynchrone Programmierung informieren: Task
, await
/ async
.
Du solltest auch in HighlightTextBlock
auf die Daten zugreifen und nicht auf die UI-Komponenten, also den Text aus der ItemsSource
(bzw. DataSource
) auslesen bzw. als Parameter übergeben.
Du solltest datenorientiert vorgehen, daher auch mein Vorschlag bzgl. UI-unabhängiger Highlighter
-Klasse.
Der Umbau der Highlighter
-Klasse ist nur ein Vorschlag von mir, wie ich es selber machen würde.
Du solltest den Code unterhalb von grid.LoadingRow += GridOnLoadingRow;
// Get DataGridRows
...
entfernen und entsprechend HighlightRow(e.Row)
in die Ereignismethode GridOnLoadingRow
packen, damit sich auch die Inlines
-Texte aktualisieren.
PS: Du fügst bisher jedesmal mit grid.LoadingRow += GridOnLoadingRow;
die Ereignismethode dem Ereignis hinzu (so daß er je Aufruf immer mehrfach ausgeführt wird) - dies sollte nur einmalig passieren!
Dein Highlighter
funktioniert aber doch bisher auch nur für das DataGrid
, da es explizit DataGridRow
benutzt (welches bei TreeView
nicht existiert).
Das Auslagern in ein ViewModel soll einfach dafür sorgen, daß die Logik eben UI-unabhängig ist. Du kannst die Funktionalität ja trotzdem in eine eigene Highlighter
-Klasse auslagern, welche dann von den ViewModels benutzt wird.
Und diese Highlighter
-Klasse sollte eben nur auf den Daten (Collection
) operieren und ebenfalls nur Daten zurückliefern, welche dann von einem entsprechenden Control/Data-Template in UI-Komponenten aufgelöst wird, s. z.B. WPF ItemsControl Fundamentals - Part 1 (das Beispiel weiter unten mit dem CityViewModel
und den Orten mit Flaggen).
Da TextBlock.Inlines
jedoch kein DependencyObject
ist, kann daran nicht gebunden werden. Evtl. hilft dir aber die Antwort bzgl. TextBlockExtensions
aus Data binding the TextBlock.Inlines?