Hallo Zusammen
ich habe ein Grid, mit Labels und Textboxen, sowie ein DataGrid.
Nun möchte ich eine TextBox, das sich in einer GridZelle in einem Canvas befindet,
bei einem Event mit einer DoubleAnimation so animieren, dass sich die Textbox über dem DataGrid auf die relevante Gridzelle bewegt. Alles geht gut, nur die TextBox bewegt sich unter dem DataGrid.
Kann ich hier eine ZOrder einstellen und wie?
<Grid Margin="5">
<Grid.RowDefinitions>
<RowDefinition Height="35"/>
<RowDefinition Height="*"/>
<RowDefinition Height="35"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition Width="40"/>
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" >xxxx</Label>
<Canvas Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="2" >
<TextBox Canvas.Left="0" Canvas.Top="0" Canvas.Right="0" Width="200" Text="xxxx" />
<TextBox Canvas.Left="0" Canvas.Top="0" Canvas.Right="0" Width="200" Text="xxxx" />
</Canvas>
<DataGrid Name="datagrid" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3" />
</Grid >
Danke und schönes WE
Gerhard
Canvas.ZIndex
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo Abt,
sorry aber so einfach ist es nicht. Die Textbox verschwindet immer ungeachtet des
Canvas.ZIndex hinter dem Datagrid
Hi sevenofnine,
Canvas.ZIndex hat natürlich nur Auswirkungen auf Elemente innerhalb der Canvas. Du müßtest also das DataGrid auch in die Canvas einfügen.
bei einem Event mit einer DoubleAnimation so animieren
Besser wäre hier die Verwendung von Triggern in Verbindung mit einem Storyboard, siehe dazu How to: Trigger an Animation When a Property Value Changes.
Insgesamt erscheint mir deine Herangehensweise aber nicht besonders vielversprechend. Deine Anforderung, eine Textbox über einer bestimmte Spalte anzeigen zulassen, klingt mir sehr danach, als ist dein Ziel, eine Art Popup-Editor zu erstellen. Dafür gibt es sicherlich bessere Ansätze, am Besten erklärst du mal ein bißchen ausführlicher, was genau du vor hast.
Christian
Weeks of programming can save you hours of planning
Hi MrSparkle
Zu meinem Vorhaben, ich habe ein MVVM Pattern. Das Datagrid zeigt dem User Datensätze an. Beim Ändern der Textbox suche ich die ID eines Datensatzes und ändere bestimmte Eigenschaften dieses Datensatzes, dadurch ändert sich auch der Status des Datensatzes im DataGrid. Nun möchte ich dem User mit einer Animation zeigen welche Zeile gefunden/betroffen war. Dazu habe ich im Canvas 2 Textboxen übereinander angeordnet, beide binden an die selbe Eigenschaft im Viewmodel, und eine von beiden Textbox möchte ich nun auf die Position des Items im Datagrid fliegen lassen. 2 Textboxen, damit die Eingabe unabhängig von der Animation an derselben Position bleibt.
Ich möchte das ganze nicht mit einem Canvas abbilden, denn die Oberfläche zeigt noch mehr Elemente, die im Grid besser angeordnet sind.
Jetzt ist diese Funktionalität nicht lebensnotwendig, falls es nicht klappt lasse ich es einfach weg, aber ich will mich weiterbilden und geht nicht gibts nicht.
Gruß Gerhard
Was genau meinst du mit
dadurch ändert sich auch der Status des Datensatzes im DataGrid ?
Was genau meinst du mit
z.b ändert sich die Eigenschaft Inhouse, durch wird der Datensatz grün statt rot, da aber einige Datensätze bereits schon grün und oder rot sind, möchte ich durch die Animation dies hervorheben.
Doch nun zurück zu meiner eigentlichen Frage, wie bekomme ich die Textbox trotz Canvas und Grid in den Vordergrund?
Hi sevenofnine,
generell würde ich empfehlen, die Benutzeroberfläche noch einmal zu überarbeiten, und zu überlegen, welche Informationen man wie darstellen will. So wie es klingt, klingt es erstmal nicht besonders benutzerfreundlich.
Wenn die Anforderung besteht (die genauen Anforderungen sind immer noch sehr unklar), die von einer Aktion betroffenen Datensätze zu markieren, dann gibt es sicherlich bessere Möglichkeiten als fliegende Textboxen.
Doch nun zurück zu meiner eigentlichen Frage, wie bekomme ich die Textbox trotz Canvas und Grid in den Vordergrund?
Eine Möglichkeit hab ich ja schon genannt. Warum das für dich nicht in Frage kommt, habe ich nicht verstanden.
Eine andere Möglichkeit wären Adorner.
Christian
Weeks of programming can save you hours of planning
Um dir eventuell ein anderen vorschlag zu machen könntest du doch eine weitere Farbe einführen z.b. Hellgrün oder Hellrot und die kürzlich geänderten Staten/Einträge in der Farbe anzeigen.
Insofern ich nicht genau weis, woher und wie die Daten kommen kann ich dir leider kein anderen Vorschlag machen. Aber wenn du es mit den Textbox machen willst hat dir MrSparkle Ja zwei Lösungen genannt.
Mfg Mert.