Keine installierten Komponenten wurden erkannt. Kann TargetName HighContrastBorder nicht auflösen - UWP Windows 10
MyCommandBar
hat seine IsOpen-Eigenschaft in XAML auf true gesetzt und daher ist der is-Text für jede Schaltfläche sichtbar, da ich möchte, dass die Beschreibungen sichtbar bleiben.
Wenn ich auf die Schaltfläche mit den Auslassungspunkten klicke, wird der Text ausgeblendet, und wenn ich das zweite Mal darauf klicke, wird der folgende Fehler angezeigt:
No installed components were detected. Cannot resolve TargetName HighContrastBorder
.
Es gibt etwas Unangenehmes mit der Benutzeroberfläche und vielleicht hängt es damit zusammen, aber ich kann nicht herausfinden, was oder warum:
Wie Sie sehen können, ist der Text meiner Schaltflächen für die verschiedenen Schaltflächen, die ich anzeige, abgeschnitten:
Code weise gibt es nichts Besonderes, so weit ich sehen kann:
<Page.BottomAppBar>
<CommandBar IsOpen="True"
ClosedDisplayMode="Compact"
IsSticky="True"
Visibility="{Binding
CommandBarViewModel.IsCommandBarVisible,
Converter={StaticResource BoolToVisibilityConverter}}"
Background="{ThemeResource SystemControlBackgroundAccentBrush}">
<AppBarButton
Icon="Add"
Label="Add"
Foreground="White"
Command="{Binding CommandBarViewModel.AddCommand}"
Visibility="{Binding CommandBarViewModel.IsAddVisible,
Converter={StaticResource BoolToVisibilityConverter}}"/>
<AppBarButton
Icon="Refresh"
Label="Refresh"
Foreground="White"
Command="{Binding CommandBarViewModel.RefreshListCommand}"
Visibility="{Binding
CommandBarViewModel.IsRefreshListVisible,
Converter={StaticResource BoolToVisibilityConverter}}"/>
</CommandBar>
</Page.BottomAppBar>
Es gibt keine InnerException und die Exception wird von App.g.i.cs geworfen
#if DEBUG && !DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION
UnhandledException += (sender, e) =>
{
if (global::System.Diagnostics.Debugger.IsAttached)
global::System.Diagnostics.Debugger.Break();
};
#endif
Haben Sie irgendwelche Ideen zu meinem Problem, d. H. Zum Ausschneiden von Text und zu einer nicht behandelten Ausnahme?
Vielen Dan
UPDATE - 1:
Wenn ich die gebundene Eigenschaft entferne CommandBarViewModel.IsCommandBarVisible
) von demVisible
Eigenschaft für dasCommandBar
und hardcode es zuVisible
, der Fehler verschiebt sich die Linie entlang und tritt nicht mehr in der App.g.i.cs auf, sondern in der gebundenen Eigenschaft der ersten Schaltfläche, für die die Sichtbarkeit eingestellt werden soll, d. h.
<AppBarButton
Icon="Add"
Label="Add"
Foreground="White"
Command="{Binding CommandBarViewModel.AddCommand}"
Visibility="{Binding CommandBarViewModel.IsAddVisible,
Converter={StaticResource BoolToVisibilityConverter}}"/>
Aber dieses Mal erhalte ich den folgenden Fehler:
An exception of type 'System.Runtime.InteropServices.COMException'
occurred in GalaSoft.MvvmLight.dll but was not handled in user code
WinRT information: Cannot resolve TargetName HighContrastBorder.
Additional information: No installed components were detected.
Ähnlich wie du siehst, aber es scheint von MVVMLight zu kommen ??? Macht keinen Sinn
Irgendwelche Vorschläge / Ideen zur Behebung dieses Problems?
UPDATE - 2:
Wenn ich alle Visibility-Eigenschaften (und die dazugehörige Bindung) entferne, wird der Befehl entsprechend angezeigt (d. H. Kein abgeschnittener Text mehr) und ich kann immer wieder auf die Schaltfläche mit den Ellipsen klicken und es kommt nicht mehr zum Absturz !!
So hängt es definitiv mit der Sichtbarkeit zusammen und bindet sie an eine Eigenschaft des Ansichtsmodells, aber was genau, ich habe keine Ahnung.
Kann es sein, dass das ViewModel nur erstellt wird, wenn die Seite geladen wird, und zu diesem Zeitpunkt ist es zu spät für die CommandBar und die Schaltflächen, um korrekt initialisiert zu werden.
Da alles in Bezug auf das Anzeigen / Verbergen von Schaltflächen wie erwartet funktioniert, außer dass mein Text abgeschnitten ist und ich nicht auf die Schaltfläche mit den Auslassungspunkten klicken kann oder es abstürzt.
UPDATE - 3:
Ich habe ein Workaround gefunden und bin nicht auf und ab gesprungen, da ich das Gefühl habe, dass es falsch ist, aber im Moment wird es reichen. Um diesen Fehler zu umgehen, stelle ich sicher, dass die Befehlsleiste und die Schaltflächen beim Initialisieren des ViewModel sichtbar sind, und blende sie dann entsprechend der Seite aus, auf der sie sich befinden.
public class AppShellViewModel {public void AppShellViewModel {this.CommandBarViewModel.IsCommandBarVisible = true; this.CommandBarViewModel.IsAddVisible = true; this.CommandBarViewModel.IsRefreshVisible = true; this.CommandBarViewModel.IsCancelVisible = true; }
...
\\Hide buttons accordingly in the various parts of your app.
this.CommandBarViewModel.IsCancelVisible = false;
}
ersönlich habe ich das Gefühl, es ist ein Fehler mit dem CommandBar-Steuerelement und den Schaltflächen, da ich es (und seine Schaltflächen) von Anfang an verbergen sollte und es soll
a) damit fehlerfrei umgehen können. b) sich korrekt "neu zeichnen" können, ohne dass der Text abgeschnitten wird.
Ich könnte mich natürlich irren und es könnte etwas mit meinem Code zu tun haben, aber aus meiner Sicht behebt das Entfernen der Sichtbarkeitsbindung es und das erstmalige Sichtbarmachen behebt es, also scheint es nach unten zu weisen.
UPDATE - 4:
Hier ist der eigentliche Code. Ich habe es so weit wie möglich vereinfacht (d. H. Namespaces, DataTemplates, Hauptinhalte usw. entfernt) und nur die Befehlsleiste und ihre Schaltflächen übrig gelassen. Hoffentlich hilft das.
Wie Sie sehen können, wenn Sie mvvmlight verwenden, ist meine Quelle auf @ gesetzLocator
und mein Pfad wird auf das relevante @ gesetViewModel
, in diesem Fall AppShellViewModel.
So wie Grace erklärt hat, erhalte ich bei Verwendung von x: bind anstelle von binding den folgenden Fehler:
Invalid binding path 'CommandBarViewModel.IsCommandBarVisible' :
Property 'CommandBarViewModel' can't be found on type 'AppShell'
MyApp ..\MyApp\Views\AppShell.xaml
XAML-Code:
<Page.Resources>
<converters:NullToVisibilityConverter x:Key="NullToVisibilityConverter" />
<converters:BoolToVisibilityConverter x:Key="BoolToVisibilityConverter" />
<x:Double x:Key="EllipseDimension">30</x:Double>
</Page.Resources>
<Page.BottomAppBar>
<CommandBar x:Name="AppBar"
IsOpen="{x:Bind CommandBarViewModel.IsCommandBarVisible}"
ClosedDisplayMode="Compact"
IsSticky="{x:Bind CommandBarViewModel.IsCommandBarVisible}"
Visibility="{x:Bind CommandBarViewModel.IsCommandBarVisible,
Converter={StaticResource BoolToVisibilityConverter}}"
Background="{ThemeResource SystemControlBackgroundAccentBrush}"
IsEnabled="{x:Bind IsNotBusy}">
<AppBarButton
Icon="Add"
Label="Add"
Foreground="White"
Command="{x:Bind CommandBarViewModel.RegisterCommand}"
Visibility="{x:Bind CommandBarViewModel.IsRegisterVisible,
Converter={StaticResource BoolToVisibilityConverter}}"/>
<AppBarButton
Icon="Refresh"
Label="Refresh"
Foreground="White"
Command="{x:Bind CommandBarViewModel.RefreshListCommand}"
Visibility="{x:Bind CommandBarViewModel.IsRefreshListVisible,
Converter={StaticResource BoolToVisibilityConverter}}"/>
</CommandBar>
</Page.BottomAppBar>
</Page>
Vielen Dank