Frage

Ich habe ein Programm, in dem ein Benutzer eine Zeile in einem Datagrid auswählt und klickt dann auf eine „Aufzeichnung starten“ klicken. Während die „Aufnahme“ geschieht, werden sie nicht in der Datagrid ausgewählt erlaubt den Wert zu ändern, so dass ich gesetzt IsEnabled auf false gesetzt. Wenn jedoch die Datenraster deaktiviert eingestellt ist, abgewählt es die ausgewählte Zeile, die Schrauben bis alle Bindungen ich an das Datagrid die SelectedItem propery haben.

Gibt es eine Möglichkeit, die Datagrid Zeile selbst ausgewählt zu halten, obwohl das Steuerelement deaktiviert ist?

Edit:. Dies geschieht nicht in Windows Vista, aber es funktioniert in Windows 7

War es hilfreich?

Lösung

Wenn Sie wirklich auf ‚Record‘ wollen Aktionen aber immer noch Visuals und Interaktionen halten den gleichen suchen, warum Sie nicht einfach einen Scheck in den das Ereignis auf Auswahl gefeuert, dass die Aufnahme zu gewährleisten, nicht stattfindet und eingestellt e.Handled = true.

Alternativ können Sie einstellen IsHitTestVisible = false und verhindern, dass sie Aktionen in der Steuerung nehmen, anstatt sie völlig zu deaktivieren.

Ich hoffe, das hilft.

Andere Tipps

Sorry, ich weiß, das Post ein wenig alt, aber ich konnte nicht eine andere Lösung für dieses irgendwoanders.

Es scheint nicht zu Vista \ 7, sondern dem Februar Veröffentlichung des Toolkits zusammenzuhängen.

Sie können einstellen, IsHitTestVisible = false wie Jeff Wain vermuten lässt, sondern als Mike bemerkt ist es nicht anders angezeigt. Auch ist es nicht Tastatureingabe deaktivieren.

Meine Lösung ist das Datagrid in einem Gitter in der gleichen Zeile und Spalte als halbtransparenten graues Rechteck zu setzen (Diese sie auf aufeinander machen). Sie haben das Rechteck in der Grid Sekunde zu setzen, um sicherzustellen, dass es auf der Oberseite des Datagrid ist. Wenn ich auf ‚Deaktivieren‘ will ich es machen das Rechteck sichtbar. Dies wird die Liste aussieht gedimmt und Mauseingaben deaktivieren, es gibt aber noch keine Tastatureingabe deaktivieren.

Um die Tastatur zu deaktivieren, muss ich abfangen ‚PreviewKeyDown‘ und setzen e.Handdled = true. Dies ermöglicht es nichts anderes zu wählen, aber immer noch einige interessante Dinge, wenn Sie Tab, um es (wie Tab nicht mehr arbeiten). Vielleicht ist es Einstellung kein Tabstopp sein und nicht fokussierbar wird auch dieses Problem zu beheben, aber das Deaktivieren Auswahl ist alles um mich wirklich interessiert.

IsHitTestVisible = false deaktiviert Mauseingaben.

Für das Deaktivieren Tastatureingaben gesetzt Fokussierbare = false.

Beide sollten über einen Stil in ElementStyle und / oder ElementEditingStyle für gebautet Datagrid Spalten inorder für das Kind Steuerung (Textbox, Checkbox, usw.) nicht akzeptieren Eingang eingestellt werden.

Sie werden höchstwahrscheinlich einen Trigger im Stil verwenden und es zu einem gewissen IsRecording Wert zu binden.

Auch Sie könnten, im gleichen Stil, die appearnce der „disabled“ steuert, indem ihre Opazität ändern = 0,4, das gibt etwas ein behindertes Feeling.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top