3 Stimmen

Wie kann ich ein Silverlight DatePicker-Steuerelement auf "ReadOnly" setzen?

Wie kann ich die System.Windows.Controls.DatePicker Steuerelement, das in einem Silverlight-Projekt verwendet wird, auf ReadOnly ?

Es scheint keine Eigenschaften zu geben, die ich innerhalb der Xaml oder Code dahinter festlegen kann.

1voto

pfa Punkte 115

Ich habe den Quellcode des Datepickers gefunden und eine ReadOnly-Eigenschaft hinzugefügt.

und "ja", es gibt einen guten Grund dafür, dies zu tun. Ich wollte 3 Staaten haben:

  1. Normal
  2. Deaktiviert (ausgegrautes Aussehen)
  3. ReadOnly (nicht ausgegraut und keine Kalender-Schaltfläche... außerdem wurde der Rahmen des Textfelds geändert, so dass es wie ein Etikett aussieht)

Der Stil von 3 war meine Präferenz, aber ich wollte insbesondere zwischen deaktivierten (ausgegrauten) und nur "visuell" lesbaren Steuerelementen unterscheiden.

War mir nicht sicher, ob ich den Code posten soll (es gibt viele)...oder ob noch jemand Interesse hat ;-)

1voto

Alejandro Punkte 11

Ich habe dieses Problem gelöst, indem ich einen neuen Stil für die DatePickerTextBox-Steuerelemente festgelegt habe. Dieses Steuerelement ist Teil des Stils des DatePicker. Mit diesen Zeilen können Sie dann alle DatePicker-Steuerelemente, die auf diesen Stil zugreifen können, schreibgeschützt machen. Dies macht nur die manuelle Bearbeitung des Datums schreibgeschützt, der Benutzer kann immer noch ein Datum mit der Dropdown-Schaltfläche auswählen.

<Style TargetType="prim:DatePickerTextBox">
  <Setter Property="IsReadOnly" Value="True"/>
</Style>

0voto

Graeme Bradbury Punkte 3673

Warum sollten Sie das wollen?

DatePicker ist eine glorifizierte Combobox, die einen Kalender anstelle einer Liste ausgibt. Wenn es nur gelesen werden soll, dann wäre es effektiv ein nur lesen Textfeld?

< Bearbeiten > Wenn es nur um das Aussehen geht, kann man eine Kopie der Steuerelementvorlage erstellen und sie so bearbeiten, dass ihr deaktivierter Zustand genauso aussieht wie ihr aktiver Zustand, und sie dann auf "deaktiviert" setzen, wenn Sie ein schreibgeschütztes Verhalten benötigen.

-1voto

Gautam Punkte 2055

Wie wäre es, wenn Sie einfach das Ereignis der Datumsänderung behandeln, es unterdrücken und auf das heutige Datum (oder ein anderes festgelegtes Datum) zurücksetzen?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X