自定义控件-WPF/Silverlight Xaml 自定义ContentControl内容符号名的问题

问题描述

WPF/Silverlight Xaml 自定义ContentControl内容符号名的问题
在silverlight中,我自己写一个继承自ContentControl的内容控件GroupBox
其xaml如下

 <ContentControl x:Class=""EnvSafe.PTA.Shell.GroupBox""    xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""    xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml""    xmlns:d=""http://schemas.microsoft.com/expression/blend/2008""    xmlns:mc=""http://schemas.openxmlformats.org/markup-compatibility/2006""    mc:Ignorable=""d"" HorizontalContentAlignment=""Stretch"" VerticalContentAlignment=""Stretch""    d:DesignHeight=""300"" d:DesignWidth=""400"">    <Grid x:Name=""LayoutRoot"" Width=""{Binding Path=Width}"" Height=""{Binding Path=Height}"" Margin=""{Binding Path=Margin}"" HorizontalAlignment=""Stretch"" VerticalAlignment=""Stretch"">        <TextBlock Text=""{Binding Path=Header}"" Margin=""10000"" Height=""auto"" HorizontalAlignment=""Left"" VerticalAlignment=""Top"" Width=""auto""/>        <Border Background=""{Binding Path=Background}"" Margin=""02.500"" CornerRadius=""5"" Padding=""5"" HorizontalAlignment=""Stretch"" VerticalAlignment=""Stretch"" BorderBrush=""Black"" BorderThickness=""1"">            <Grid>                <ContentPresenter x:Name=""Host"" HorizontalAlignment=""Stretch"" VerticalAlignment=""Stretch"" Content=""{Binding Path=Content}""/>            </Grid>        </Border>    </Grid></ContentControl>

在程序主窗体里使用如下(片段):

 <Grid>    <self:GroupBox Header=""测试"">        <TextBlock x:Name=""TbTest"" />    </self:GroupBox></Grid>

现在在主窗体的前台代码中,访问TbTest时会发现TbTest为null,这是由于自定义内容控件的xaml和主窗体不处于同一name scope,那么如何修改可以使得在主窗体中根据x:Name发现自定义控件的内容?

注意:为什么Grid,StackPanel,Border这些原生控件能够支持内容获取?

解决方案

http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E7%9F%A5%E8%AF%86%E5%BA%93/841.shtml

时间: 2024-11-03 13:47:26

自定义控件-WPF/Silverlight Xaml 自定义ContentControl内容符号名的问题的相关文章

WPF/Silverlight陷阱:XAML自定义控件的嵌套内容无法通过名称访问

为了说明这个问题,假定我们需要实现一个具有特殊功能的按钮控件.编写Xaml文件如下: <Button x:Class="TestWpf.XamlButton"     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> Button>

艾伟_转载:WPF/Silverlight陷阱:XAML自定义控件的嵌套内容无法通过名称访问

为了说明这个问题,假定我们需要实现一个具有特殊功能的按钮控件.编写Xaml文件如下: <Button x:Class="TestWpf.XamlButton"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">Button> 对

WPF自定义控件与样式(13)-自定义窗体Window &amp; 自适应内容大小消息框MessageBox

原文:WPF自定义控件与样式(13)-自定义窗体Window & 自适应内容大小消息框MessageBox 一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要内容: 自定义Window窗体样式: 基于自定义窗体实现自定义MessageBox消息提示框: 二.自定义Window窗体样式 自定义的Window窗体效果:   因为WPF默认的窗体比较简陋,大都需要自己

WPF自定义控件与样式(2)-自定义按钮FButton

原文:WPF自定义控件与样式(2)-自定义按钮FButton 一.前言.效果图 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接.  还是先看看效果图吧:       定义Button按钮名称叫FButton,主要是集成了字体图标(参考上一篇:WPF自定义控件与样式1-矢量字体图标(iconfont)).其实在WPF里,要实现本文FButton的需求,完全可以不用自定义控件,使用样

在silverlight里自定义一个控件,在自定义控件类里面定义依赖属性出错。

问题描述 在silverlight里自定义一个控件,在自定义控件类里面定义依赖属性出错. 在silverlight里自定义一个控件ReplicationEventComboBox继承ComboBox,在ReplicationEventComboBox类里面定义依赖属性TextProperty. 其中ReplicationEventComboBox中 private TextBlock _text; 字段在方法OnApplyTemplate()中被赋值 var text = this.GetTem

C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四十二)

C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四十二)制作精美的Mini地图② 前面章节中讲解的包括对象头像面板.Mini雷达地图等窗体都是位置固定的,在处理起来方式多样且简单:而RPG.SLG.休闲养成等类型的游戏中往往会大量使用到悬浮且可自由拖动的窗体,比如包裹面板.武器装备面板.个人属性面板.技能面板.系统设置面板等等,这就要求我们必须为游戏量身定做一个通用且易用的ChildWindow控件.那么本节我将为大家讲解如何制作一个包含可拖动头部.关闭

WPF/Silverlight Layout 系统概述——Arrange

上一篇我们介绍了WPF/Silverlight Layout系统的Measure过程,本文将继续介绍Arrange过程.   Arrange过程概述   普通基类属性对Arrange过程的影响 我们知道Measure过程是在确定DesiredSize的大小,以便Arrange过程参考这个DesiredSize,确定给MyPanel分配多少空间,但是DesiredSize只是作为参考,在有些用例下,MyPanelParent在调用MyPanel.Arrange的时候,会根据父的实际策略指定MyPa

C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四十四)

C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四十四)制作主角属性面板及加点器 游戏中会使用大量的菜单面板,而这些面板往往都带有选项卡.如果用Silverlight工具中的TabControl,则需要通过复杂的xaml重写模板来实现自定义样式,这一点时常让开发者头疼,毕竟界面的东西应该属于美工的范畴,这也是我所发现在目前Silverlight中唯一一处只能通过xaml而无法用代码实现的地方.当然,如果您对此特别感兴趣,同样可以到http://www.c

C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(三十六)

C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(三十六)地图自定义切片与导出 做为提升游戏性能的一个重要环节就是地图的优化,作为基于Web的游戏来说,可以通过将地图切成若干同尺寸的片后,根据主角的位置进行时时的按需加载.举个简单例子,好比一幅20000*20000的地图,我们将之以400*400像素为一个地图片单位切成2500片,假若游戏窗口尺寸为800*600,那么我们每次只需加载以主角为中心的周围9块地图片(1200*900像素)即可实现填充,这比起