2013-04-20 73 views
0

如何在ToggleSwitch_Checked事件中找到放置在ToogleSwitch ContentTemplate内的控件?如何从ToogleSwitch找到子控件

我试过toogle.Switch.FindName(“NameOftControlToFindHere”)但它返回NULL。

这里是XAMl标记,我试图在ToggleSwitch_Checked事件中以编程方式查找tbMonthlyLimitData文本块。

<toolkit:ToggleSwitch Header="Monthly Limit" Margin="0,10,0,0" Name="tsMonthlyLimit" Checked="ToggleSwitch_Checked"> 
         <toolkit:ToggleSwitch.ContentTemplate> 
          <DataTemplate> 
           <StackPanel Orientation="Horizontal" Name="ts"> 
            <TextBlock Text="{Binding}" Name="tbMonthlyLimit"/> 
            <TextBlock Text="Hello" Name="tbMonthlyLimitData"/> 
           </StackPanel> 
          </DataTemplate> 
         </toolkit:ToggleSwitch.ContentTemplate> 

+0

您是否尝试过使用Blend? – 2013-04-20 14:34:35

+0

可能是这将有助于 http://stackoverflow.com/questions/11460533/referencing-a-dynamically-created-control/11471602#11471602 – Deeps 2013-04-22 11:52:40

回答

-1

你所面对的问题是名称范围 - 命名它是一个不同的范围之内。找到它的一种方法是使用Linq-to-VisualTree ::

var textBlock = tsMonthlyLimit.Descendants() 
           .OfType<TextBlock>() 
           .Single(i => i.Name=="tbMonthlyLimitData"); 
+0

“Microsoft.Phone.Controls.ToggleSwitch”不包含一个定义为'后代'和没有扩展方法'后裔'接受类型'Microsoft.Phone.Controls.ToggleSwitch'的第一个参数可以找到(你是否缺少使用指令或程序集引用?) – NoobDeveloper 2013-04-29 13:26:51