XAML-syntax-Fehler-Blockierung-designer, aber feine Zusammenstellung
Ich habe laufen in eine ziemlich bizarre Sache, die passiert, ich habe eine DataGrid
definiert, die in einer WPF-XMAL-Seite, die im folgenden erklärt:
<DataGrid.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#FF3399FF" />
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="White" />
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="#FF3399FF"/>
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightTextBrushKey}" Color="White" />
</DataGrid.Resources>
Technisch sind sich die beiden Inactive
SystemColors
Typen sind aus .net 4.5, jedoch kann ich das Programm kompilieren, wenn es sich auf den Gegner .net 4, und diese Inaktiven Pinsel arbeiten, aber während es sich auf den Gegner .net 4 laden der XMAL designer-Seite in Visual Studio den Fehler auslöst The member "InactiveSelectionHighlightTextBrushKey" is not recognized or is not accessible.
und blockiert dann in der designer-Ansicht. Aber es noch kompiliert und zeigt wie oben definiert sind, im Programm.
Dies scheint sehr widersprüchlich zu sagen die wenigsten und ich kann nicht sagen, ob dies ist ein Visual Studio-2012-Problem, oder wenn es ist das erlauben, das Programm zu kompilieren, weil mein computer Entwicklung hat .net 4.5 installiert und es ist nur die änderung der Ziel-framework, wenn es sieht, dass etwas mit ihm (ich bezweifle stark, dieses aber). Oder ist es möglich, dass der Inaktive Typen sind in .net 4, aber nicht als unterstützt aufgeführt in der Dokumentation und nur verursacht dieses Problem in VS?
Gibt es einen besseren Weg, um dies zu tun .net 4, mir zu erlauben, um die inaktiven Auswahl Farbe in einem DataGrid-Zeile? Oder ist der einzige Weg, dies zu tun wird ein upgrade auf .net 4.5?
- Was passiert, wenn Sie führen Sie Ihr Programm auf einem Computer ohne 4.5 installiert?
- Ich wünschte, ich könnte dies testen, aber nicht über einen computer, um ohne 4.5 drauf.
- Die app kann nicht auf einer Maschine laufen, ohne 4.5 (nur zufällig lief in dieses Problem in einer meiner apps und bin auf diese Frage ALSO, während versuchen, um eine Lösung zu finden).
- Naja, passiert nur, wir liefen in eine ähnliche 4.0/4.5 problem Letzte Woche. In unserem Fall, ein threading-Fehler. Wir "fest", es durch erzwingen der installation von 4.5 in den installer. Scheinbar gibt es änderungen in der 4.5, die brechen, wenn mit 4.0, aber es gibt keine Prüfung auf 4.5 installiert, anscheinend.
- Ich lief in dieses problem, das in VS2010, wo ein DataGrid mit einer InactiveSelectionHighlightBrushKey Pinsel mit Volltonfarbe würde erfolgreich kompiliert, aber Absturz bei der Ausführung. 'Fixed' es durch die Installation .Net v4.5 als Nzc) vorgeschlagen (+1 würde seinem Kommentar)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Visual Studio erstellt eine Versammlung, selbst wenn Ihr Ziel nicht festgelegt .NET FW 4.0, und verwenden Sie
InactiveSelectionHighlightBrushKey
im XAML-code. Diese Baugruppe wird korrekt ausgeführt ist ein system mit .NET FW 4.5. Aber wenn das system hat nur .NET FW 4.0, wird eine Ausnahme geworfen werden, wenn der system-Benutzer erstellen-Steuerung mitInactiveSelectionHighlightBrushKey
.So kann man nicht mit der
InactiveSelectionHighlightBrushKey
in Baugruppen, die mit dem Ziel festgelegt FW 4.0, denn Sie wird nicht funktionieren in einem system mit nur .NET FW 4.0.Zur Unterstützung der FW 4.0 und FW 4.5 Sie können die Farbe der ausgewählten Zeile im Handler von
LostFocus/LostKeyboardFocus/GotFocus
Veranstaltungen. Siehe Beispiel-code https://stackoverflow.com/a/8095932/1815957Wenn Sie nicht möchten, verwenden Sie den code dahinter dann eine alternative zu
InactiveSelectionHighlightBrushKey
istControlBrushKey
. Die folgenden arbeitete für mich:ControlTextBrushKey
ändert sich auch die Standard-text-Farben für die Zeilen-und Spaltenüberschriften. Das macht es ziemlich nutzlos, in der Tat, wie der gesamte text wird verschwinden, wenn ausgewählt. // Müssen Sie auch explizit-set DataGrid.Vordergrund, um so etwas wie Schwarze um das zu beheben.