![](/img/trans.png)
[英]Why do I not have access to App.xaml.cs from other classes in my app?
[英]How do I add .CS functionality to XAML classes built in Expression Design for a Silverlight APP?
如何将.CS功能添加到Expression Design中内置的XAML类中?
我有一个设计师交付给我的Silverlight项目,该项目似乎还没有太多功能。 我注意到的第一件事是,似乎没有任何对应的.cs文件与“ LayoutRoot”的子级匹配。 我的意思是,正如在Expression Blend中显示的那样,这些是“ LayoutRoot”下“对象和时间轴选项卡”中的子节点。
在Visual Studio 8中查看时,它们似乎是Page.xaml类的子节点。 第一步不应该是我生成一些.cs文件或类来处理这些网格的功能吗? 我在第一个子网格的名称上进行了搜索,但是在任何现有的.cs文件中都没有得到任何结果。 如何生成.cs文件?
网格通常用作整个页面的容器控件。 您通常不直接处理它。 如果网格中有控件,则可以处理这些控件。 给它们命名(即x.Name =“ someName”),然后处理这些控件的事件。 在控件和事件处理方面,它几乎完全类似于WinForms。
例如,这是WPF项目中的一些XAML(我知道这不是Silverlight,但基本相同)
<Grid x:Name="LayoutRoot">
<Canvas
x:Name="canvas1"
Height="100"
HorizontalAlignment="Left"
Margin="116,62,0,0"
VerticalAlignment="Top"
Width="200">
</Canvas>
<Button
x:Name="btnGetChildren"
Content="Get Children"
Height="23"
Margin="174,209,218,47"
Width="75"
Click="btnGetChildren_Click" />
</Grid>
请注意,我在“网格”内部有一个“画布”和一个按钮。 请注意,该按钮具有我正在处理的Click事件。 该单击事件的代码在页面的“ xaml.cs”文件中。
private void btnGetChildren_Click(object sender, RoutedEventArgs e)
{
foreach (UIElement element in canvas1.Children)
{
// some code
}
}
XAML和xaml.cs文件是部分类,因此即使您在.cs文件后面的代码中看不到它们,页面上的组件也是该类的属性。 若要查看实际效果,请创建一个方法,并在方法主体中开始键入对象的名称,然后您将看到它出现在智能感知中。
另一种方法是从设计表面处理它。 在属性窗口上,切换到“事件”。 找到您要操作的事件,然后在提供的字段中键入方法名称。 当您按下“ Enter”键时,VS将把方法连接到事件,并直接转到您刚刚创建的处理程序方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.