Laden...
Avatar #avatar-2980.jpg
Taladan myCSharp.de - Member
Individualprogrammierer sowie Student Osnabrück Dabei seit 06.04.2008 582 Beiträge
Benutzerbeschreibung

Forenbeiträge von Taladan Ingesamt 582 Beiträge

09.01.2009 - 19:52 Uhr

Das ist ein beispiel für winforms. In wpf kann man die oberfläche direkt designen (wie jedes andere control auch) aber ich weiß leider nicht wie. es gab etwas was man dafür speziell machen muß, aber was weiß ich net mehr,

09.01.2009 - 19:41 Uhr

natürlich. wenn ich was professionelles mir kaufen könnte, dann wäre blend meine erste wahl. aber das geld habe ich nicht übrig.

09.01.2009 - 18:02 Uhr

Hallo zusammen,

wie kann man dem Window ein bestimmten Style verpassen. Also das z.b. die Titelleiste bestimmte Farben hat, die Umrandung dazu passend und die Buttons ein (Verkleinern, Minimieren/Maximieren und Schließen) andere Icons?

09.01.2009 - 12:43 Uhr

Jepp geht ganz anders 😄


MessageBoxResult result = MessageBox.Show("test", "test", MessageBoxButton.OKCancel, MessageBoxImage.Information, MessageBoxResult.Cancel);

             if (result == MessageBoxResult.Cancel) {


             }

21.12.2008 - 02:05 Uhr

Du kannst mal probieren, ob es reicht, das Event als abgehandelt zu deklarieren. e.Handled = true.

Wenn nicht leg dir doch einfach eine Variable an, in der du das letzte aktualierte Object hineinpackst. Wenn dieses nicht das aktuelle ist, aktulisierst du die ansicht. wenn ja, dann natürlich nicht und schon solltest du keine zirkelbeziehung mehr haben.

Gruß

27.11.2008 - 14:43 Uhr

Ich habe mein DataSet nur ganz normal den DataContext zu gewiesen.

this.DataContext = V2DataBase.Stellen;

26.11.2008 - 20:14 Uhr

Und wenn du eine simple Test-appl. auf den entsprechenden Rechner laufen läßt?

26.11.2008 - 17:22 Uhr

Hallo,

ich habe mir ein Control gebastelt, welches mir ermöglicht, eine ganz normale Datentabelle optisch aufgewertet an zu zeigen.
DIese Anzeige enthält mehrere Spalten und auch eine FirmenID, um die Firma, die hinter den Datensatz steckt, zu identifizieren. So weit klappt auch alles. Zusätzl werden alle Daten der Firma entsprechend im selben Control angezeigt. Auch das funktioniert wunderbar.
Doch wenn ich nun die FirmenID wechsle, ändert sich nicht die Anzeige der Firmendaten.

Wenn ich per Code das Child auslese, erhalte ich die richtigen daten.

Anzeige der StellenID


<TextBlock Text="{Binding Path=FirmenID}" Grid.Column="1" />

Anzeige des Firmennamens im Detailbereich


<Label Padding="0" Content="{Binding Path=Stellen2Firmen/Firmenname}" />

Wenn ich per Code den Wer auslese, erhalte ich das richtige Ergebnis.



            ((DataRowView)lbStellen.SelectedItem).Row["FirmenID"] = 11;

            V2DataBase.AcceptChanges();
            
            lbStellen.UpdateLayout();

            DataRow[] rows = ((DataRowView)lbStellen.SelectedItem).Row.GetChildRows("Stellen2Firmen");
            DataRow row = rows[0] ;

            Debug.WriteLine(row["Firmenname"].ToString());

Kann mir jemand sagen wo mein fehler liegt?

26.11.2008 - 16:36 Uhr

Im Webcast "Der entfesselte Client reloaded - Moderne Oberflächen mit WPF planen, gestalten, umsetzen" wird genau gesagt, das ab Tier 1 WPF Graphic beschleunigt wird. Da wird dir auch erzählt, ab wann was beschleunigt wird (Teil 2 ab ZeitIndex 1:14 Std) und es wird auch erzählt das auf DirectX 9 augebaut wird. Also liegt es an X9 wenn mehrere GPU´s unterstütz werden.
Es wird glücklicherweise in den Webcast aus erklärt, wie man das (Hardware-)Tier abfragen kann.

24.11.2008 - 19:58 Uhr

Hallo,

ich habe dutzende Funktionen in meinen aktuellen Template eingebaut. Mir ist aufgefallen, wenn ich Trigger verwenden würde, könnte ich mir die meisten davon spaaren.

Ich erklär mal kurz ein Beispiel. Eine Funktion schaltet die Sichbarkeit mehrere Elemente um. Zwar sind diese schon mit ein an der gebunden, doch muß ich gelegentlich auch per Code diese ändern. Was zwar durch das DataBinding immer noch geschieht, aber mir wäre es lieber, wenn ich zentral eine einzelne Resource fest legen kann, ein Boolean. Dies geht ja relativ einfach. Jedoch weiß ich nun nicht wie ich diesen Bool-Wert per Code ändern kann, da es sich ja um eine Resource in XAML definiert handelt über die man ja nicht über Name zugreifen kann.

Weiß jemand rat?

21.11.2008 - 20:33 Uhr

Ich vergas zu sagen, das dies natürlich auch an den controls liegt die du verwenden willst.

21.11.2008 - 20:21 Uhr

Das ist nicht so ganz einfach. versuche entweder previewKeyPress (oder ähnliche Events). Wenn das nicht klappt, mußt du ein ApplicationCommand erstellen und aktivieren (letztes ist durchaus aufwendig beitet aber fast 100% Erfolgswahrscheinlichkeit). Ersteres ist schneller realisiert und durch den EventKomandobaum wird in der regel auch reagiert wenn ein untergeordnetes Element den fokus hat. Nachteil, das es durchaus auch abgefangen und sogar unterbrochen werden kann.

18.11.2008 - 11:34 Uhr

Jain.

Ich stand vor dem selben Problem. Direkt kannst du das nicht machen. Aber zumindest umgehen. Ich habe es dadurch gelößt das ich mir eine Methode geschrieben und diese den Panel zugefügt habe.

Diese Prozedur löst zum einen ein selbst geschriebenes Ereignis aus, zum anderen fügt sie dann auch dem Panel (bei mir ein Grid) das Childrenobject hinzu.

Natürlich muß dann das hinzufügen des Objektes ebenfalls angepasst werden. Ich verwende dazu das Click-Ereignis auf mein Panel. Hier wird die Position abgefragt und mit dem Element zusammen der Methode übergeben.


        public void AddElement(UIElement Element, System.Windows.Point Position)

18.11.2008 - 11:25 Uhr

Die Abfrage ist relativ einfach. Nur die auswertung wird schwiriger.

Du verwendest wahrscheinlich ein DataTemplate, oder? Wenn nein, mußt du dieses Verwenden. In diesen DataTemplates kannst du den Elementen normal Events zu ordnen. Jetzt wirds schwierig. Ohne Code gehts net weiter.

Wichtig ist, das du dein angeclicktes Element identifizieren kannst. Hier empfielt sich das Tag-Element. Eines was bei WPF fast nicht mehr benötigt wird und jedes Objekt enthalten kann. Ich habe hier mal die ID einer Datenbindung genommen. Das Event Preview... hat den Vorteil das ggf. andere Elemente darüber oder darunter vom EventRouting ausgeschlossen oder eingeschlossen werden können. Zudem es keine wirklich leere Zelle geben kann 😉, es steckt immer ein Object vom Typ ListViewItem dahinter. Also nutz das aus.


        <DataTemplate x:Key="TemplateStellen" x:Name="TemplateStellen" >
            <StackPanel x:Name="lvStellenContent" PreviewMouseDown="lvStellenContent_PreviewMouseDown" Tag="{Binding Path=ID}" >
                  <!-- Dein Inhalt -->
            </StackPanel>
         </DataTemplate>


Nun gehts an den Code. Der ist relativ Simpel. Erst convertierst du das Senderobject in dein Element. Dann kannst du deinen Tag auswerten und schon hast du deine Identifizerung des Objekts welchen hinter dem ListViewItem liegt. Aber Achtung, es ist das Object, also eine DataRow oder ein Element aus List<t> oder ähnliches. Nicht das ListViewElement selbst. Falls du hier eine Identifizierung brauchst mußt du noch deutlich weiter denken.


private void lvStellenContent_PreviewMouseDown(object sender, MouseButtonEventArgs e)
        {
            StackPanel click = (StackPanel)sender;
            MessageBox.Show(click.Tag.ToString());
        }

16.11.2008 - 22:59 Uhr

Hallo, gibt es eigendlich eine schnelle Version, die ListView(GridView) zu sortieren oder muß man tatsächlich noch umständlcih das headerclickevent abfangen und erweitern?

16.11.2008 - 16:43 Uhr

verwendetes Datenbanksystem: DataSet

Ist es möglich über eine Expression eine berechnete Spalte zu erstellen, die aus einer Datenrelation (hier ein Child) den Wert (hier ein String) eienr Bestimmten Zelle zurückgibt?

Ich würde gerne das neueste Datum aus der Kind-Tabelle Kontakte in einer DataColumn der Master Tabelle zurückgeben können. Natürlich ist dies mehr oder weniger doppelt gemoppelt, aber leider fumktioniert eine SortDescription scheinbar nur mit DataColumns der Mastertabelle und ich möchte gerne nach diesen Datum sortienen können.

16.11.2008 - 16:30 Uhr

Danke die Klasse kannte ich noch nicht.

16.11.2008 - 16:11 Uhr

Hallo,

ich habe ein DataTemplate für eine ListView erstellt. In dieser ist u.a. eine ListView. Diese möchte ich gern Soriteren. Eine Sortierung kann man ja nur per Code hinzufügen. Doch kann ich über den Code gar nicht auf das ListView/den Namen zu greifen. Weder direkt per lvKontakte noch per this.FindName("lvKontakte"). Und ja das ListView ist selbstverständlich benannt.
Hat jemand eine Idee wie ich da ran komme?

16.11.2008 - 13:32 Uhr

e.Handelt = true;

Dann wird kein weiteres Event mehr ausgelößt in der Hirachie-Reihenfolge.

15.11.2008 - 20:01 Uhr

Also ich habe eine Mastertabelle Customers.
Diese wird in in einer ListView angezeigt.
An dieser Tabelle hängt eine DataRelation Customers2Kontakte
Hier wird immer der soll immer der letzte Kontakt angezeigt werden.

Akutell wird in ItemTemplate so gebunden
text="{Binding Path=Customers2Kontakte/RealDatum}"

Und genau nach diesen Datum, welches da erscheint soll nun die Mastertabelle Customers sortiert angezeigt werden.

15.11.2008 - 19:29 Uhr

In WPF haben leider die EventArgs diese Argumente nicht mehr. Man muß leider schon einen umweg gehen.

15.11.2008 - 19:13 Uhr

Ja so weit war ich jetzt auch schon. aber an der ausführung scheiterst da die Spalte ja nicht der DataTable gehört sondern einer DataRelation. wie verweise ich also richtug auf eine datarelation?

15.11.2008 - 19:03 Uhr

Eine dumme Frage, wie kann ich

  1. einen Rowfilter erstellen der nur sortiert und
  2. die sortierung auch noch auf eine beziehung festlegt?
15.11.2008 - 18:53 Uhr

Hallo,

ich habe eine ListBox wo aus einen DataTable Daten angezeigt wird. Die Listbox ist ja einfach zu Sortieren per SortDescriptions. Doch leider kann man diese SortDescriptions scheinbar nicht auf MasterSlave verwenden. Wie kann ich nun trotzdem die Listbox sortieren.

Beispiel (funktioniert)


if (sort == eSortierRichtung.Hoch) lbStellen.Items.SortDescriptions.Add(new SortDescription("ID", ListSortDirection.Ascending));
else lbStellen.Items.SortDescriptions.Add(new SortDescription("ID", ListSortDirection.Descending));

Beispiel (funktioniert nicht):


if (sort == eSortierRichtung.Hoch) lbStellen.Items.SortDescriptions.Add(new SortDescription("Kontakte2Customer/RealDatum", ListSortDirection.Ascending));
else lbStellen.Items.SortDescriptions.Add(new SortDescription("Kontakte2Customer/RealDatum", ListSortDirection.Descending));

Der Grund ist, das die Customertabelle natürlich keine Spalte namen RealDatum hat und so die gebundene Listbox jetzt nicht danach sortiren mag.
Hat jemand einen Lösungsansatz?

15.11.2008 - 18:21 Uhr

Da in beiden Fällen die Close() aufgerufen wird, bezweifle ich das man am sender ein entsprechenden tag finden kann.

Wenn du einen unterschied machen willst, kannst du aber anders vorgehen. Du könntest eine Variable (das die Tag-Property) dazu verwenden, die bei einen "manuelen" closed ein Flag setzt (oder wegnimmt, je nach belieben) und dieses dann beim normalen closing per x-Click entsprechend aus zu werten.

Hier solltest du übrigens lieber das ereignis Closing nehmen, sonst hast du nichts mehr, womit du arbeiten kannst 😉.

15.11.2008 - 03:08 Uhr

drawing ist der Namespace wo noch in WindowsForms gezeichnet wurde.

Zwar gibt es diesen Namespace immer noch, aber die meist gebrauchten Formen sind im Namespace System.Windows.Shapes untergebracht.

Path ermöglicht dir eine Kombination aus geraden Linienen, kurzen usw zu zeichnen.
Polyline (gibt es immer noch) ermöglicht nur die geraden Linien und ausschließlich diese (es wird seitens MS empfohlen auf Path zu zu greifen, warum wurde nicht gesagt).
Data ist eine Eigenschaft von Path vom Type Geometrie.
Dieser Geometrie ordnest du dann ensprechend deine KindElemente zu, also z.b. deine Punkte deiner Linie.

In diesen Webcast wird es relativ gut erklärt. Allerdings wird hier (hauptsächlich) auf WPF eingegangen Microsoft XAML Technologien Teil 4: 2D Grafik

15.11.2008 - 02:57 Uhr

Probiere es mal so.



 public class CustomControl1 : Control
    {

        static CustomControl1()
        {
           this.DName = "Startwert"; 
        }

        public string DName
        {
            get { return (string)GetValue(DNameProperty); }
            set { SetValue(DNameProperty, value); }
        }

        // Using a DependencyProperty as the backing store for DName.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty DNameProperty =
            DependencyProperty.Register("DName", typeof(string), typeof(customControl1));
    }

15.11.2008 - 02:47 Uhr

Hallo,

Weil es sich bei allen Fragen um ein

  1. um eine Zuordnung aus den Verzeichnispfad handelt und nicht wie gewünscht aus der resource
  2. es sich um wpf und nicht um c# handelt.

Gerade der Bereich Image.Source wird per code leider gänzlich anders gehandhabt, als per WPF. In WPF reicht es, wenn man den Pfad angibt. Wenn man selbiges per Code probiert also als String wird es schon mal nicht akzeptiert. Sollte man intelligent genug sein und ein URI-Object weiter zu geben ist man schon dem richtigen Ergebnis näher, aber noch nicht richtig. Man muß wie michlG es geschrieben hat, erst ein BitmapImage erstellen.

Aber auch das ist nicht ganz was ich möchte. Ich möchte NICHT auf den Verzeichnispfad zurück greifen sondern auf die resourcenvariable.
also: Properties.Resources.meinBitmap verwenden. Da dieser Bereich später auch vom User geändert werden kann. Sollte ich dies nicht bewerkstelligen können, werde ich ne menge Code umschreiben müssen. Was ich eigendlich nicht wollte. Zudem noch einiges an Prozeduren zusätzlich für ein "BildManagemant" hinzu kommt.

Wie kann man also eine Properties.Resources.BitmapNachWahl einen WPF Image-Element per c# code zu ordnen?

14.11.2008 - 20:42 Uhr

kein problem.

14.11.2008 - 20:32 Uhr

Ich habe mich selbst nicht mit der Polyline beschäftigt.
Aber in WPF wird nicht mit drawing sondern mit Shapes gezeichnet. Die Polyline ist hier das Element Path aus den Shapes Namespace. Die Punkte werden im Data angegeben. Ich hoffe die Schlagworte helfen dir schon weiter.

14.11.2008 - 20:24 Uhr

Unhöflich ist die Antwort, weil es für einen selbst für einen Einsteigerprogrammier selbstverständlich ist, erst google zu bemühen, zumindest wenn er schon länger als 1 Woche dabei ist. Unpassend weil der Eintrag auf einen Blog verweißt, der lediglich ziegt, wie man ein Image ALS Resource anlegt. Zudem die Anwendung die auf der Seite erklärt wird ebendso falsch wie unvollständig ist.

Genauer kann man es nicht beschreiben, nur mit mehr Worten. Also mache ich das mal.

Ich habe in meinen Resourcen des Projekts diverse Images/Bitmaps.

Diese sind natürlich als Bitmap hinterlegt.

Aber eine direkte Zuordnung ist nicht möglich!

Image = Properties.Resources.meinBitmap;

Genausowenig wie ein

Image.Source = Properties.Resources.meinBitmap;

funktioniert.

Es geht nur über einen SEHR umständlichen Code, was eigendlich Unsinn sein sollte, das das Bitmap als Resource ja schon vorliegt und man über den Umweg des Dateisystems gehen muß.


BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.UriSource = new Uri(@"\Resources\meinBitmap.gif", UriKind.RelativeOrAbsolute);
bi.EndInit();
Image.Source = bi;

@vbprogger Imagebox ist ein Element aus WindowsForms, welches nicht in WPF existiert.

14.11.2008 - 16:04 Uhr

klar, aber das ergab kein treffer 😉.

Wie auch dein Link keiner ist. Ließ erst mal das Problem.

14.11.2008 - 15:16 Uhr

Wie kann man ein Bitmap aus den Resourcen des Projekts einen Image zu ordnen?

13.11.2008 - 15:21 Uhr

Eine Bindung ist nicht möglich. Dafür muß leider eine codebehind.variante her halten. Aber es funktioniert ⚠

13.11.2008 - 14:51 Uhr

Hallo,

welche Eigenschaft wird benötigt, um eine Scrollviewer paralell die selbe stelle des darunter liegenden Controls anzeigen. Jedoch finde ich nicht die eigenschaft, wo man angibt, welcher bereich nun der sichbare des Scrollviewer ist.

13.11.2008 - 12:02 Uhr

Das Hauptproblem ist, das der Detailbereich über mehrere GridViewColumns gehen wird.
Wenn du da eine Lösung kennst, hilft mir das weitere. Ohne diesen Teil, sind alle anderen Tipps sinnlos 😦.

13.11.2008 - 02:19 Uhr

Willst du mal heulen. O.g. habte ich ohne 1 zeile codebehind erledigt. Ergo sollte das auch so bleiben.

Zudem der Detailbereich nicht an einer bestimmten Stelle sein soll, sondern IN der Liste, als Teil des Elements.

Dein Beispiel verwendet ein seperates element and fixer position. aber ich guck mal ob ich was zaubern kann. hab da gerade eine idee.

12.11.2008 - 22:24 Uhr

ist schon ähnlich. aber nicht das was ich will

so sieht es momentan aus. und das wäre es, was ich realisieren will (ungefähr). Es sind noch bei weiten nicht alle funktionen der aktuellen version übernommen.

Wie man sehen kann, wird ein ListViewItem, welches Selektiert wurde mit einen Detailbereich erweitert. In diesen Bereich kommen dann Anzeigen aus anderen Tabellen hinzu.

12.11.2008 - 11:54 Uhr

Hallo Kaji,

hast du dafür evtl auch ein Beispiel?

12.11.2008 - 11:51 Uhr

Ich habe schon dutzende Internetseiten durchsucht. Aber keine möglichkeit dergleichen gefunden. Wenn du mir da einen Tipp geben könntest wäre ich glücklich.

11.11.2008 - 12:27 Uhr

Hallo Taladan

Wie mir scheint, muß jedoch das ganze Fenster als XNA-Fenster herhalten (also DirectX-gesteuert)
Ja, muss - oder sollte es.
Bei Spielen macht nichts anderes Sinn.

Bei einem Map-Editor ist das wieder was anderes.

Gruss Peter

So was in der Art sollte es werden. Gibt also keine kombimöglichkeit für embettedXNA?

11.11.2008 - 12:26 Uhr

Eigendlich würde ich ein ListView.Grid benötigen. Aber da dies keine 2 Zeile unterstüzt muß eine Listbox her halten. Ziel ist es, natürlich alle funktionen der Listview zu erhalten.
Hauptsächlich gilt dies für die einstellbaren Breiten der Spalten und die möglichkeit zu sortieren.

Deshalb habe ich ein zustätzliches Grid über der ListBox gesetzt, wo ich nun den Header rein packe.

Klappt bisher sehr gut. Da das ListViewItem entsprechend ein Grid hat welches über SharedSizeGroup´s die gleichen Breiten hat. Unglücklicherweise funktioniert dann kein GridSplitter mehr.

Ergo habe ich probiert, die Grids per Databinding an mein "HeaderGrid" zu binden. Dann sind. Dann funktioniert zwar der GridSplitter Perfekt, aber die Zeilen werden seltsamerweise nicht mehr abgeschnitten, wie es ja normalerweise der Fall ist.

Das ergebnis sieht dann ungefähr so aus

ListBoxItem1| Juhu ich bin der Inhalt | und ich der Zweite -Item1 2Zeile die nicht hier relevant ist

ListBoxItem 2 | Jepp ich bin der zweite Inhalt und freue mich über Leser | der zweite Zweite Item2 2Zeile

It3| Ja diese Zeile wurde weiter eingeschoben, die obien jedoch nicht 😦.

10.11.2008 - 20:31 Uhr

Hallo,

ich würde gerne wissen, wie man bei einer Listbox die genaue Größe des Inhalts (also Breite) abfragen kann.

Benauer gesagt, möchte ich daran Binden, damit ein Element die Gleiche Größe wie der Content der ListBox erhält

10.11.2008 - 20:22 Uhr

Hallo

mit WinForms:
>

mit WPF:
>

chrische

Leider beantwortet das nicht meine Frage. Aktuell bin ich nach wie vor beim Stand, nein das geht nicht.

Bei mir würde eine Aufgabe deutlich erleichtert werden, wenn ich ein XNA-Element mit in ein WPF-Window kombineren könnte und eine kombination aus beiden erzeugen könnte. Beispielweise, aufbau eines Festers mit diversen Grids, Textboxen usw und ein Frame/Page mittels XNA angezeigt wird.

Wie mir scheint, muß jedoch das ganze Fenster als XNA-Fenster herhalten (also DirectX-gesteuert)

10.11.2008 - 19:57 Uhr

In kombination in einen Fenster?

10.11.2008 - 18:45 Uhr

nimm auf jeden Fall XNA. Wenn du 2D machen willst, brauchst du auch nur wenig einarbeitung.
WPF ist nicht dafür gedacht. Basta.

Wiederspreche ich. Theoretisch kann man mit WPF nahezu alles machen. Auch komplexe 2D/3D, Animationen, Spiegelungen und vieles mehr (und das ist lediglich der Grafikteil). Allerdings sind grenzen gesetzt. Z.B. Nebeleffekte gibt es nicht (vorgefertigt von MS).

Nachteil von XNA und DirectX ist die Hardwarenahe Programmierung, was ein plötzliches aus für diverse (Hardware)Komponenten bedeuten könnte 😉.

Fazit: Theoretisch ist mit WPF alles möglich.

Allerdings wird man mit XNA wahrscheinlich schneller Erfolge sehen. Nachteil ist, das man XNA und Businessoberfläche wohl kombinieren kann (Korrigiert mich bitte, wenn ich da falsch liege, ich habe noch nie mit XNA gearbeitet)

07.11.2008 - 15:47 Uhr

Ich möchte gern für ein eigenes Element einen Unterelement (Lines auf einen Canvas-Element) die Eigenschaft BitmapEffekt zufügen. Und zwar in diesen Falle soll die Eigenschaft bereits im eigenen CanvasElement zur verfügung stehen (Canas.LinesBitmapEffekt). Doch irgendwie weiß ich nicht, wie ich die Standarteffekte für das Element verfügbar machen soll. (Eigendlich geht es hier nur um ein Simples durchschleifen der Eigenschaft).

07.11.2008 - 15:41 Uhr

Dumme Frage, hat Line.Fill überhaupt eine Auswirkung auf das Element?