Nenhum componente instalado foi detectado. Não é possível resolver o TargetName HighContrastBorder - UWP Windows 10
MinhasCommandBar
tem sua propriedade IsOpen definida como true em XAML e, portanto, o texto is para cada botão fica visível, pois desejo que as descrições permaneçam visíveis.
Quando clico no botão de reticências, ele oculta o texto e, na segunda vez em que clico nele, recebo o seguinte erro:
No installed components were detected. Cannot resolve TargetName HighContrastBorder
.
Há algo estranho acontecendo com a interface do usuário e talvez esteja relacionado a isso, mas não consigo descobrir o que ou por quê:
Como você pode ver, o texto dos meus botões é cortado para os vários botões que estou exibindo:
Em termos de código, não há nada de especial nisso, até onde posso ver:
<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>
Não há InnerException e a exceção é lançada em App.g.i.cs
#if DEBUG && !DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION
UnhandledException += (sender, e) =>
{
if (global::System.Diagnostics.Debugger.IsAttached)
global::System.Diagnostics.Debugger.Break();
};
#endif
Alguma idéia sobre o meu problema, ou seja, recorte de texto e exceção não tratada?
obrigado
ATUALIZAÇÃO - 1:
Quando removo a propriedade binded (CommandBarViewModel.IsCommandBarVisible
) deVisible
propriedade para oCommandBar
e codifique-o paraVisible
, o erro desce a linha e, em vez de ocorrer no App.g.i.cs, agora está ocorrendo a propriedade binded do primeiro botão em que está tentando definir a visibilidade.
<AppBarButton
Icon="Add"
Label="Add"
Foreground="White"
Command="{Binding CommandBarViewModel.AddCommand}"
Visibility="{Binding CommandBarViewModel.IsAddVisible,
Converter={StaticResource BoolToVisibilityConverter}}"/>
Mas desta vez, recebo o seguinte erro:
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.
Semelhante como você pode ver, mas parece estar vindo do MVVMLight ??? Não faz sentido!
Alguma sugestão / idéia sobre como resolver isso?
ATUALIZAÇÃO - 2:
Se eu remover todas as propriedades Visibility (e a ligação correspondente), o comando será exibido de acordo (ou seja, não há mais texto de corte) e posso clicar no botão de reticências repetidas vezes e não trava mais !!
Definitivamente, está relacionado à Visibility e vincula-o a uma propriedade ao modelo de visualização, mas o que exatamente, não faço ideia.
O ViewModel pode ser construído apenas quando a página é carregada e, neste estágio, é tarde demais para que o CommandBar e seus botões sejam inicializados corretamente.
Estranho como tudo em relação aos botões mostrar / ocultar funciona como esperado, exceto que meu texto é cortado e não consigo clicar no botão de reticências ou ele trava.
ATUALIZAÇÃO - 3:
Eu encontrei uma solução alternativa e não estou pulando para cima e para baixo, pois sinto que está errado, mas por enquanto isso funcionará. Para contornar esse erro, certifique-se de definir a barra de comandos e os botões como visíveis ao inicializar o meu ViewModel e oculto-os adequadamente com base na página em que ele está.
classe pública AppShellViewModel {AppShellViewModel vazio {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;
}
Pessoalmente, sinto que é um erro no controle e nos botões da CommandBar, pois devo escondê-lo (e seus botões) desde o início e deve
a) ser capaz de lidar com isso sem erros. b) ser capaz de "redesenhar" a si mesmo corretamente sem ter o texto cortado.
É claro que posso estar errado e isso pode ter algo a ver com meu código, mas, da minha perspectiva, remover a ligação de visibilidade corrige e torna visível primeiro corrige, portanto parece estar apontando para baixo.
ATUALIZAÇÃO - 4:
Aqui está o código real. Simplifiquei o máximo que pude (ou seja, removemos namespaces, DataTemplates, Main content, etc ...), deixando apenas a CommandBar e seus botões. Espero que isso ajude.
Como você pode ver ao usar o mvvmlight, minha fonte está definida comoLocator
e meu caminho está definido para o relevanteViewModel
, nesta instância, AppShellViewModel.
No entanto, como explicado para Grace, quando uso x: bind em vez de bind, recebo o seguinte erro:
Invalid binding path 'CommandBarViewModel.IsCommandBarVisible' :
Property 'CommandBarViewModel' can't be found on type 'AppShell'
MyApp ..\MyApp\Views\AppShell.xaml
Código XAML:
<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>
Obrigado.