C# Silverlight布局网格子控件
我试图设置布局网格内按钮的属性。网格本身是动态生成的,网格单元内的按钮也是动态生成的。不幸的是,我无法在代码中按名称引用任何内容 我需要根据它们所在的网格单元来引用这些按钮。我尝试使用以下代码C# Silverlight布局网格子控件,c#,silverlight,C#,Silverlight,我试图设置布局网格内按钮的属性。网格本身是动态生成的,网格单元内的按钮也是动态生成的。不幸的是,我无法在代码中按名称引用任何内容 我需要根据它们所在的网格单元来引用这些按钮。我尝试使用以下代码 stackButton = (Button) (from buttons in rowGrid.Children where Grid.GetColumn (buttons as FrameworkElement) == s.RoomCol
stackButton = (Button) (from buttons in rowGrid.Children
where Grid.GetColumn (buttons as FrameworkElement) == s.RoomCol
where Grid.GetRow (buttons as FrameworkElement) == s.RoomRow
select buttons).FirstOrDefault();
“stackButton”控件是一个按钮控件。“s”是一个自定义控件,用于保存网格中按钮的坐标。当代码执行时,我没有得到任何返回的对象。有没有办法让我更好地执行这项任务 简短回答: 没有创造性(见下文)。这基本上是唯一的方法,因为附加属性是如何工作的 旁白 但有两件事。。。在文体上,您可以使用where子句,而不是两个where子句&& 从技术上讲,您可以让两个控件共享同一行/列(在这种情况下,它们是重叠的,因此您可能需要重新考虑“firstordefault” 完整答案:是 如果你想变得超级聪明,你可以注册你自己附加的依赖属性,比如:
Grid.MyRow
和Grid.MyColumn
,并给它们一个OnChanged
处理程序,它将:
- 设置标准网格。设置行(或列)
- 将控件添加到字典中,并键入行、列。即:创建自己的类,该类具有
和行
,实现列
和等于
,因此可以执行以下操作: 字典按钮=新建字典() 一旦更改(DependencyObject对象、DependencyPropertyChangedEventArgs e) { //剪断 _添加(新网格键(行、列)、按钮); }GetHashCode
rowGrid.Children.Add(…)
)
如果您不能这样做,那么您可以有一个方法,该方法遍历子项一次并将它们全部添加到字典中,以便进一步查找O(1)简短回答: 这是唯一的方法,因为附加属性是如何工作的 旁白 但有两件事……从风格上来说,你可以使用where子句,而不是where子句&& 从技术上讲,您可以让两个控件共享同一行/列(在这种情况下,它们是重叠的,因此您可能需要重新考虑“firstordefault” 完整答案:是 如果你想变得超级聪明,你可以注册你自己附加的依赖属性,比如:
Grid.MyRow
和Grid.MyColumn
,并给它们一个OnChanged
处理程序,它将:
- 设置标准网格。设置行(或列)
- 将控件添加到字典中,并键入行、列。即:创建自己的类,该类具有
和行
,实现列
和等于
,因此可以执行以下操作: 字典按钮=新建字典() 一旦更改(DependencyObject对象、DependencyPropertyChangedEventArgs e) { //剪断 _添加(新网格键(行、列)、按钮); }GetHashCode
rowGrid.Children.Add(…)
)
如果你不能做到这一点,那么你可以有一个方法,在子类中迭代一次,并将它们全部添加到字典中,以便进一步查找O(1)这能回答你的问题吗?这能回答你的问题吗?