【问题标题】:Unable to access UserControl using X:Name from XAML Page无法使用 XAML 页面中的 X:Name 访问 UserControl
【发布时间】:2019-12-29 22:59:50
【问题描述】:

这是嵌入到我的页面列表视图中的用户控件

<ListView.ItemTemplate>
    <DataTemplate x:DataType="data:ZTask">
        <local:AddUserControl x:Name="MyUserControl" 
            HorizontalAlignment="Stretch" 
            VerticalAlignment="Stretch" />
    </DataTemplate>
</ListView.ItemTemplate>

我已使用 X: Name 将其命名为 MyUserControl。我尝试在我的页面cs文件中访问它,但它给了我一个错误消息“当前上下文中不存在名称'MyUserControl'”。 帮我解决这个问题。

【问题讨论】:

  • 在ListView中,即使你设置了x:name,也是无效的。因为ListView中有多个userControl,不知道你指向哪一个。为什么要获取userControl?您可以尝试使用 Binding 来达到预期的效果。
  • 您能在工具箱中看到您的AddUserControl吗?

标签: c# visual-studio xaml uwp uwp-xaml


【解决方案1】:

由于ListView 中的每个项目都将添加AddUserControl,因此您希望获得对AddUserControl 的哪个特定实例的引用?

如果您想对AddUserControls 做点什么,您可以为每个人处理Loaded 事件:

<ListView.ItemTemplate>
    <DataTemplate x:DataType="data:ZTask">
        <local:AddUserControl x:Name="MyUserControl" 
                    HorizontalAlignment="Stretch" 
                    VerticalAlignment="Stretch"
                    Loaded="OnLoaded"/>
    </DataTemplate>
</ListView.ItemTemplate>

private void OnLoaded(object sender, RoutedEventArgs e)
{
    AddUserControl auc = (AddUserControl)sender;
    //...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    相关资源
    最近更新 更多