Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WPF .NET4.0重用UserControl的同一实例

WPF .NET4.0重用UserControl的同一实例
EN

Stack Overflow用户
提问于 2011-05-24 03:10:22
回答 3查看 5K关注 0票数 10

我希望将同一用户控件的实例显示两次。我尝试做了以下几件事:

代码语言:javascript
运行
AI代码解释
复制
<UserControl.Resources>
    <Views:MyControl View x:Key="_uc1" MinHeight="300"/>
</UserControl.Resources>

并尝试在TabControl中使用它:

代码语言:javascript
运行
AI代码解释
复制
<TabControl Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="3" >
    <TabItem >
        <TabItem.Header>
            <TextBlock Text="Header1" FontWeight="13"/>
        </TabItem.Header>

        <StackPanel  >
            <ContentControl Content="{StaticResource _uc1}"/>
        </StackPanel>
    </TabItem>
    <TabItem >
        <TabItem.Header>
            <TextBlock Text="Header2" FontWeight="13"/>
        </TabItem.Header>

        <StackPanel MinHeight="600" >
            <ContentControl Content="{StaticResource _uc1}"/>
        </StackPanel>
    </TabItem>
</TabControl>

我收到错误消息:“{”指定的元素已经是另一个元素的逻辑子元素。请先断开连接。“}”

我想实现的目标有可能实现吗?

谢谢,

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-24 03:14:55

事实并非如此。如错误所示,给定的对象只能在给定的逻辑树中出现一次。这有助于确保逻辑树保持为树。

如果你使用的是MVVM模式(或者通常只是使用DataBinding ),那么你可以将两个不同的UserControls绑定到同一个后台视图模型/数据上,这样两个控件就会有相同的行为和操作相同的状态表示。不过,您仍然需要两个不同的控件。

票数 9
EN

Stack Overflow用户

发布于 2011-05-24 03:22:07

在WPF (和Silverlight)中,一个控件不能出现在可视化树中的多个位置。您可以做的是拥有两个单独的用户控件实例,但将它们的相关属性绑定到相同的基础源代码。

例如,假设您有一个Contact对象,并且希望两个MyControl实例引用相同的FullName属性。

代码语言:javascript
运行
AI代码解释
复制
<UserControl>
    <UserControl.Resources>
        <my:Contact x:Key="data" FullName="Josh Einstein" />
    </UserControl.Resources>
    <TabControl DataContext="{StaticResource data}">
      <TabItem>
        <TabItem.Header>
          <TextBlock Text="Header1" FontWeight="13" />
        </TabItem.Header>
        <StackPanel>
          <!-- instance #1 -->
          <Views:MyControl FullName="{Binding FullName, Mode=TwoWay}" />
        </StackPanel>
      </TabItem>
      <TabItem>
        <TabItem.Header>
          <TextBlock Text="Header2" FontWeight="13" />
        </TabItem.Header>
        <StackPanel>
          <!-- instance #2 -->
          <Views:MyControl FullName="{Binding FullName, Mode=TwoWay}" />
        </StackPanel>
      </TabItem>
    </TabControl>
</UserControl>

如果您只希望单个控件出现在可视化树中的多个位置,但实际上不是交互式的,则可以使用VisualBrush将其“绘制”到另一个控件上。

票数 8
EN

Stack Overflow用户

发布于 2011-05-24 08:11:51

你不可能在两个地方拥有相同的控件,但你可以让它跳转,参见我的this answer中的一个例子。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6105309

复制
相关文章
程序化的事件侦听器
也就是说,在其中一个页面中我们使用uni.on或者uni.once,在另一个页面中就可以使用uni.emit进行调用,前提是uni,on或者uni.
阿超
2022/08/17
1.4K0
程序化的事件侦听器
当提到“事件驱动”时,我们在说什么?
去年年底(2016年底),我和ThoughtWorks同事一起参加了一个研讨会,讨论“事件驱动”的本质。在过去的几年里,我们构建的很多系统都大量使用了事件。对于这些系统,人们常常赞誉有加,但批评的声音也不绝于耳。我们的北美办公室组织了一次峰会,来自世界各地的ThoughtWorks资深开发者出席会议并分享了他们的想法。
ThoughtWorks
2019/05/05
5200
当提到“事件驱动”时,我们在说什么?
【IOC 控制反转】Android 事件依赖注入 ( 事件依赖注入代码示例 )
Android 依赖注入的核心就是通过反射获取 类 / 方法 / 字段 上的注解 , 以及注解属性 ; 在 Activity 基类中 , 获取该注解 以及 注解属性 , 进行相关操作 ;
韩曙亮
2023/03/29
3410
【IOC 控制反转】Android 事件依赖注入 ( 事件依赖注入代码示例 )
【IOC 控制反转】Android 事件依赖注入 ( 事件依赖注入具体的操作细节 | 获取要注入事件的 View 对象 | 通过反射获取 View 组件的事件设置方法 )
Android 依赖注入的核心就是通过反射获取 类 / 方法 / 字段 上的注解 , 以及注解属性 ; 在 Activity 基类中 , 获取该注解 以及 注解属性 , 进行相关操作 ;
韩曙亮
2023/03/29
1.8K0
【IOC 控制反转】Android 事件依赖注入 ( 事件三要素 | 修饰注解的注解 | 事件依赖注入步骤 )
Android 依赖注入的核心就是通过反射获取 类 / 方法 / 字段 上的注解 , 以及注解属性 ; 在 Activity 基类中 , 获取该注解 以及 注解属性 , 进行相关操作 ;
韩曙亮
2023/03/29
9090
vue的事件总线是公用的吗?使用事件总线有哪些优点?
在不同的应用程序中含有非常丰富的组件,这些组件共同了正常运行的应用程序组件之间也有相互的联系,有些组件是父子组件,有些组件是兄弟组件,这些组件都需要进行通信的。那么vue的事件总线是公用的吗?下面为大家简单介绍vue的事件总线是公用的吗。
用户8715145
2022/03/07
6450
js也可以有自定义事件 注入就是这么爽
  在c#中有delegate,还有特殊的可以直接应用于事件编程的delegate,那就是event。而在js中没有c#的event,更没有delegate,有的只是dom元素内置的的native的不可扩展的event,比如无法为input元素添加事件,只能在其拥有的事件(如onclick=handler)上扩展应用。那么能不能做到自定义的事件模拟效果呢?答案是肯定的,也就是本文的主题。   首先弄明白一下事件的意图——可以在发生一件事的时候执行额外的代码,如document.attachEvent('on
用户1183026
2018/01/18
9550
IOC架构实现布局、事件注入
通过反射获取ContentView注解,并最终调用Activity的setContentView方法
aruba
2021/12/06
5430
IOC架构实现布局、事件注入
使用eventBus事件的重复触发事件问题的解决
在单页应用中,在 A 页面中触发事件,然后在 B 页面中对这个事件进行响应是一个很常见的需求,那么当有这种需求的时候要怎么实现呢。有两种方案可以实现:
用户2305169
2018/07/24
3.8K0
jQuery 双击事件(dblclick)时,不触发单击事件(click)
在jQuery的事件绑定中,执行双击事件(dblclick)时能触发两次单击事件(click)。即一个标签元素(如div等),如果元素同时绑定了单击事件(click)和双击事件(dblclick),那么执行单击事件(click)时,不会触发双击事件(dblclick), 执行双击事件(dblclick)时却会触发两次单击事件(click)。 先看一下点击事件的执行顺序:
飞奔去旅行
2019/06/13
5.7K0
【春节日更】写一个通用的事件侦听器函数
今日分享,面试题一道: 写一个通用的事件侦听器函数(机试题) 本题不难,主要是要能理解,它想考你的是什么? 此题主要考你:事件不同操作的兼容写法 具体实现,可以参考下面代码的实现思路
用户9914333
2022/07/22
5380
自己实现事件总线-EventBus事件总线的使用
在C#中,我们可以在一个类中定义自己的事件,而其他的类可以订阅该事件,当某些事情发生时,可以通知到该类。这对于桌面应用或者独立的windows服务来说是非常有用的。但对于一个web应用来说是有点问题的,因为对象都是在web请求中创建的,而且这些对象生命周期都很短,因而注册某些类的事件是很困难的。此外,注册其他类的事件会使得类紧耦合。事件总线便可以用来解耦并重复利用应用中的逻辑。
架构师精进
2018/08/27
1.6K0
自己实现事件总线-EventBus事件总线的使用
jQuery 事件(三) 事件的绑定和解绑、对象的使用、自定义事件
之前学的鼠标事件,表单事件与键盘事件都有个特点,就是直接给元素绑定一个处理函数,所有这类事件都是属于快捷处理。翻开源码其实可以看到,所有的快捷事件在底层的处理都是通过一个”on”方法来实现的。jQuery on()方法是官方推荐的绑定事件的一个方法 基本用法:.on( events ,[ selector ] ,[ data ] ) 最常见的给元素绑定一个点击事件,对比一下快捷方式与on方式的不同
Yiiven
2022/12/15
4.2K0
事件总线的原理是什么?事件总线如何使用?
我们都知道在vue组件中有很多通信方式,例如我们都熟知和常见的父子组件通信和兄弟组件通信。在其中还有一种功能非常强大的通信方式,可以做到跨组件通信,那就是事件总线。事件总线的原理是什么呢?下文将会有一个详细的介绍,请阅读下文。
用户8715145
2022/03/18
1.2K0
详解 Solidity 事件Event - 完全搞懂事件的使用
很多同学对Solidity 中的Event有疑问,这篇文章就来详细的看看Solidity 中Event到底有什么用?
Tiny熊
2018/07/23
2.1K0
事件流、事件捕获和事件冒泡的介绍
我们在点击页面时,事件发生时会在各元素节点按照一定的顺序进行传播,这种传播过程就称作事件流。
伯约同学
2022/02/18
1.3K0
双击事件(dblclick)时,不触发鼠标按下(mousedown) 动作事件
在一个dom节点的事件绑定中,如果同时绑定了dblclick和mousedown那么想要执行双击事件(dblclick)时能就会触发两次mousedown事件。
李维亮
2023/10/23
9380
双击事件(dblclick)时,不触发鼠标按下(mousedown) 动作事件
事件总线指的是什么?事件总线如何使用?
比较常见的组件通信方式有父子组件通信和兄弟组件通信,两个组件是有着引入和被引入关系。如果两者之间没有任何引入关系,就可以使用事件总线来达到通信的目的。到底事件总线指的是什么?我们将在下文做一个介绍。
用户8715145
2022/03/18
1.1K0
liteavsdk的推流事件和播放事件的事件码
推流和播放的事件码我们通常通过这个来判断当前的流的状态 推流事件列表 code TXLiveSDKEventDef常量 含义说明 1001 PUSH_EVT_CONNECT_SUCC 已经连接推流服务器 1002 PUSH_EVT_PUSH_BEGIN 已经与服务器握手完毕,开始推流 1003 PUSH_EVT_OPEN_CAMERA_SUCC 打开摄像头成功 1005 PUSH_EVT_CHANGE_RESOLUTION 推流动态调整分辨率 1006 PUSH_EVT_CHANGE_BITRATE 推流动
腾讯云-qichengdeng
2019/09/12
2.4K0
浅谈JavaScript的事件(事件对象)
  在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含这所有与事件有关的信息。包括导致事件的元素、事件的类型和事件的相关信息。例如鼠标操作的事件中,会包含鼠标的位置信息。而键盘触发的事件会包含与按下的键有关信息。所有浏览器都支持event对象,但支持方式不同。 DOM中的事件对象   兼容dom的浏览会将一个event对象传递到事件处理程序中。 1 var aa=document.getElementById("aa"); 2 aa.onclick=functi
水击三千
2018/02/27
1.3K0

相似问题

JPA事件侦听器

118

JPA实体事件侦听器

15

当使用事件侦听器时,knockout不绑定吗?

10

空事件侦听器:可以吗?

14

可以使用PHP添加事件侦听器吗?

42
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档