XAML真的有必要吗?如果有人真的想要,可以在运行时在C#代码中声明Silverlight页面上显示的所有内容吗? VISIFire有一个示例代码,他们在C#代码中设置了一个类,图表,然后通过一个简单的C#调用将其添加到用户界面:
LayoutRoot.Children.Add(chart);
如何使用我已经在XAML文件中定义的类进行类似的创建,但由于其他原因我需要在运行时声明它?如果我可以在XAML中使用它,我认为它会起作用,因为它的显示没有错误。声明如下:
<views:PrescriberPage01 x:Name="DashboardPrescriberPage01"
Visibility="Collapsed" SelectedProduct="{Binding SelectedProduct,
Mode=TwoWay}"Grid.Row ="0"/>
我如何在C#代码中声明它?
答案 0 :(得分:3)
XAML真的有必要吗?
我想不,你可以在代码中完成你在XAML中可以做的所有事情。但是XAML确实是一种非常便捷的方式。我认为很少有人不同意这一点。
我如何在C#代码中声明它?
您可以在代码中创建绑定。 Example from MSDN。在你的情况下,它会是这样的:
PrescriberPage01 page = new PrescriberPage01();
page.Visibility = Visibility.Collapsed;
Binding myBinding = new Binding("SelectedProduct");
myBinding.Mode = BindingMode.TwoWay;
myBinding.Source = this; // or whatever object carrying the property
// "SelectedProduct" that you bind against.
page.SetBinding(PrescriberPage01.SelectedProduct, myBinding);
LayoutRoot.Children.Add(page);
答案 1 :(得分:1)
XAML最好以声明的方式描述用户界面,我建议使用不带代码的XAML,我也建议看一下MVVM模式
答案 2 :(得分:1)
我宁愿说“当我可以使用XAML时,是否真的需要C#”? XAML非常好,并且明确地为GUI设计。
这里有两种选择。加载XAML dynamicly。
或者在代码中创建它。 (其他人在我输入AGAIN时发布了解决方案!;))
答案 3 :(得分:0)
简单的控件很简单,但是......你可能还想要对这些对象进行一些样式设计+ 你可能想要一个或两个动画......这已经(大部分)都是在xaml中提供的...而且它非常简单......如果你非常讨厌xaml你可能想要考虑“Blend”; p
答案 4 :(得分:0)
没有Xaml就无法创建的一个特定示例是DataTemplate。
您可以编写将从XAML字符串创建DataTemplate的代码,但不能直接在c#中将子项添加到新建的DataTemplate中。