Установленные компоненты не обнаружены. Не удается разрешить TargetName HighContrastBorder - UWP Windows 10
мойCommandBar
имеет свойство IsOpen, установленное в true на XAML, и поэтому текст is для каждой кнопки виден, так как я хочу, чтобы описания оставались видимыми.
Когда я нажимаю на кнопку с эллипсами, она скрывает текст, и во второй раз, когда я нажимаю на нее, я получаю следующую ошибку:
No installed components were detected. Cannot resolve TargetName HighContrastBorder
.
С пользовательским интерфейсом происходит что-то неловкое, и, возможно, это связано с этим, но я не могу понять, что и почему:
Как вы можете видеть, текст моих кнопок обрезан для различных кнопок, которые я отображаю:
Код мудрый, в этом нет ничего особенного, насколько я вижу:
<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>
InnerException отсутствует, и исключение выдается из 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
Любые идеи о моей проблеме, то есть обрезке текста и необработанном исключении?
Спасибо
ОБНОВЛЕНИЕ - 1:
Когда я удаляю свойство binded (CommandBarViewModel.IsCommandBarVisible
) отVisible
собственность дляCommandBar
и жестко закодировать этоVisible
ошибка перемещается вниз по строке и вместо того, чтобы возникать в App.g.i.cs, теперь она имеет свойство привязки первой кнопки, которую пытается установить видимость на i.e.
<AppBarButton
Icon="Add"
Label="Add"
Foreground="White"
Command="{Binding CommandBarViewModel.AddCommand}"
Visibility="{Binding CommandBarViewModel.IsAddVisible,
Converter={StaticResource BoolToVisibilityConverter}}"/>
Но на этот раз я получаю следующую ошибку:
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.
Похоже, как вы можете видеть, но, похоже, это происходит от MVVMLight ??? Не имеет смысла!
Любые предложения / идеи о том, как решить эту проблему?
ОБНОВЛЕНИЕ - 2:
Если я удаляю все свойства Visibility (и соответствующую им привязку), команда отображается соответствующим образом (то есть, больше нет обрезанного текста), и я могу снова и снова нажимать кнопку эллипсов, и она больше не падает !!
Так что это определенно связано с видимостью и привязкой его к свойству с моделью представления, но что именно, я понятия не имею.
Может быть, ViewModel создается только при загрузке страницы, и на этом этапе уже слишком поздно для CommandBar и его кнопок для правильной инициализации.
Странно, так как все, что касается отображения / скрытия кнопок, работает должным образом, за исключением того, что мой текст обрезан, и я не могу нажать на кнопку с эллипсом или она вылетает.
ОБНОВЛЕНИЕ - 3:
Я нашел обходной путь, и я не прыгаю вверх и вниз по этому поводу, потому что я чувствую, что это неправильно, но пока это будет делать. Чтобы обойти эту ошибку, я устанавливаю панель команд и кнопки видимыми при инициализации модели ViewModel, а затем скрываю их соответственно на странице, на которой он находится.
открытый класс 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;
}
Лично я чувствую, что это ошибка с элементом управления CommandBar и кнопками, так как я должен быть в состоянии скрыть его (и его кнопки) с самого начала, и он должен
а) быть в состоянии справиться с этим без каких-либо ошибок. б) уметь правильно «перерисовывать» себя, не обрезая текст.
Конечно, я могу ошибаться, и это может быть как-то связано с моим кодом, но с моей точки зрения, удаление привязки видимости исправляет ее, а сначала делает ее видимой - исправляет ее, так что, похоже, это указывает вниз.
ОБНОВЛЕНИЕ - 4:
Вот актуальный код. Я максимально упростил его (то есть удалил пространства имен, шаблоны данных, основное содержимое и т. Д.), Оставив только панель команд и ее кнопки. Надеюсь, это поможет.
Как вы можете видеть при использовании mvvmlight, мой источник настроен наLocator
и мой путь установлен на соответствующийViewModel
в этом случае AppShellViewModel.
Тем не менее, как объяснено Грейс, когда я использую x: bind вместо привязки, я получаю следующую ошибку:
Invalid binding path 'CommandBarViewModel.IsCommandBarVisible' :
Property 'CommandBarViewModel' can't be found on type 'AppShell'
MyApp ..\MyApp\Views\AppShell.xaml
Код 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>
Благодарю.