使用 Visual States 切换 AppBarButton 可见性时出现“未检测到已安装的组件”错误
Posted
技术标签:
【中文标题】使用 Visual States 切换 AppBarButton 可见性时出现“未检测到已安装的组件”错误【英文标题】:"No installed components were detected" error on toggling AppBarButton visibility with Visual States 【发布时间】:2020-06-22 07:47:54 【问题描述】:在我的 UWP 应用程序中,我有一个带有几个 AppBarButtons 的 CommandBar,我正在使用 Visual State 切换其可见性。每当我将任何视觉状态应用为VisualStateManager.GoToState(this, nameof(State1), false);
我收到以下错误:
未检测到已安装的组件。具有名称的目标对象 无法为 Setter 解析“Button8”。
按钮(button8)不为空。
XAML:
命令栏> 堆栈面板> 网格> 视觉状态> 视觉状态>
C#:
private void Button_Click(object sender, RoutedEventArgs e)
try
VisualStateManager.GoToState(this, nameof(State1), false);
catch (Exception ex)
//No installed components were detected exception here
private void Button_Click1(object sender, RoutedEventArgs e)
try
VisualStateManager.GoToState(this, nameof(State2), false);
catch (Exception ex)
//No installed components were detected exception here
【问题讨论】:
嗨,您将整个类“this”作为参数传递给 GoToState 函数,而不是将您的控件作为参数传递。这解决了问题。 public static bool GoToState(Control control, string stateName, bool useTransitions); 谢谢@Noorul。传递 ActionsCommandBar 而不是这个可以防止异常,但它不起作用,因为在这种情况下按钮的可见性不受视觉状态的影响。 【参考方案1】:我从another source 得到了答案。这是因为在页面渲染的时候,Button8实际上是在OverflowFlyout中。这意味着 Button8 未添加到可视化树中。 (可以在Debug模式下打开实时可视化树来确认)。
VisualState 的切换是基于当前的可视化树。如果元素没有渲染,切换时VisualState会报错。
所以我决定在后面的代码中处理它。
【讨论】:
以上是关于使用 Visual States 切换 AppBarButton 可见性时出现“未检测到已安装的组件”错误的主要内容,如果未能解决你的问题,请参考以下文章
切换 Visual Studio 用户 - Visual Studio Premium
在 Visual Assist 或 Vanilla Visual Studio 中切换枚举的自动完成功能
在Windows上使用visual studio在本机环境中进行iphone应用程序开发的优势