我在Windows 8中使用Silverlight 5.1.30514.0,并且我有一种情况,其中根据表中的字段,我需要显示不同数量的CheckBox,如果字段为4,则为4 CheckBox,如果字段是6,则6 CheckBox和该字段可以是4,6,10或12,然后我使在资源:如何在Silverlight中访问控件到DataTemplate中?
<DataTemplate x:Name="chkField4" DataType="ContentControl">
<Grid Name="grd">
<Border BorderBrush="Black" BorderThickness="1" Margin="0,0,0,0" Background="DarkSeaGreen" />
<CheckBox Content="2" Name="chk2" Grid.Column="1" Margin="20,20,20,20" Checked="CheckBox_Checked" />
<CheckBox Content="1" Name="chk1" Grid.Column="1" Margin="20,60,20,20" Checked="CheckBox_Checked"/>
<CheckBox Content="4" Name="chk4" Grid.Column="1" Margin="80,20,20,20" Checked="CheckBox_Checked"/>
<CheckBox Content="3" Name="chk3" Grid.Column="1" Margin="80,60,20,20" Checked="CheckBox_Checked"/>
</Grid>
</DataTemplate>
而另一:
<DataTemplate x:Name="chkField6" DataType="ContentControl">
<Grid Name="grd">
<Border BorderBrush="Black" BorderThickness="1" Margin="0,0,0,0" Background="DarkSeaGreen" />
<CheckBox Content="2" Name="chk2" Grid.Column="1" Margin="20,20,20,20" Checked="CheckBox_Checked" />
<CheckBox Content="1" Name="chk1" Grid.Column="1" Margin="20,60,20,20" Checked="CheckBox_Checked"/>
<CheckBox Content="4" Name="chk4" Grid.Column="1" Margin="80,20,20,20" Checked="CheckBox_Checked"/>
<CheckBox Content="3" Name="chk3" Grid.Column="1" Margin="80,60,20,20" Checked="CheckBox_Checked"/>
<CheckBox Content="6" Name="chk6" Grid.Column="1" Margin="140,20,20,20" Checked="CheckBox_Checked"/>
<CheckBox Content="5" Name="chk5" Grid.Column="1" Margin="140,60,20,20" Checked="CheckBox_Checked"/>
</Grid>
</DataTemplate>
和2更类似于(chkField10 ,chkField12)。 我把ContentControl中:
<ContentControl Name="chk" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"/>
而在后面的代码视场,如果场= 4:
chk.ContentTemplate = chkField4;
现在,我想以检讨是否要访问每个组合框检查,是这样的:
if (chk2.IsChecked) ...
if (chk1.IsChecked) ...
但是,问题是:CHK1,CHK2,......不可问他们,我想提出一个通用的循环使用“为”或“的foreach “1到n,其中ni s在ContentControl中的CheckBox的数量
我不知道我该怎么做,或者如果我做的是对的,有人可以指导我?
我在这样的环境真的新,感谢
Hey Cyndy,你甚至在做这种事情的快速搜索,无论它在[这里](http://stackoverflow.com/questions/26258512/get-the-controls-inside-datatemplate-control)或[其他地方](https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=controls+inside+datatemplate+silverlight),然后再问?如果有的话,你可能会很快找到与[VisualTreeHelper](http://blog.falafel.com/finding-controls-by-type-in-silverlight-and-wpf/)相关的东西。 – 2014-10-09 17:45:51
是的Chris W.,肯定的,我尝试过在这里和MSDN论坛的几个选项,但显然不是位于ContenControl儿童内部,无论在DataTemplate里面定义什么,都将其作为单个控件 – Cyndy 2014-10-09 18:32:47