在Silverlight中使用C#而不是XAML

本文关键字:XAML Silverlight | 更新日期: 2023-09-27 18:00:48

XAML真的有必要吗?如果有人真的想,Silverlight页面上显示的所有内容都可以在运行时用C#代码声明吗?VISIFire有一个示例代码,他们在C#代码中设置了一个类chart,然后通过一个简单的C#调用将其添加到用户界面:

LayoutRoot.Children.Add(chart);

如果我已经在XAML文件中定义了一个类,但由于其他原因,我需要在运行时声明它,我该如何对它进行类似的创建?如果我能在XAML中原样使用它,我想它会起作用,因为它的显示没有错误。声明如下:

        <views:PrescriberPage01 x:Name="DashboardPrescriberPage01" 
    Visibility="Collapsed" SelectedProduct="{Binding SelectedProduct,
 Mode=TwoWay}"Grid.Row ="0"/>

我该如何在C#代码中声明这一点?

在Silverlight中使用C#而不是XAML

XAML真的有必要吗?

我想没有,您可能可以在代码中执行XAML中可以执行的所有操作。但是XAML确实是一种非常非常方便的方法。我想很少有人会不同意这一点。

我该如何在C#代码中声明这一点?

您可以在代码中创建绑定。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);

XAML最好以声明的方式描述用户界面,我建议使用没有代码隐藏的XAML,我还建议查看MVVM模式

我宁愿说"当我可以使用XAML时,C#对GUI真的有必要吗?"?XAML确实很好,而且是为GUI明确设计的。

这里有两个选项。动态加载XAML。

或者在代码中创建它。(其他人在我再次输入时发布了解决方案!))

简单的控件很容易,但。。。您可能还希望对这些对象进行一些样式设置+你可能想要一两个动画。。。这已经(大部分)在xaml中提供了。。。这非常容易。。。如果你如此讨厌xaml,你可能会想一想"混合";p

没有Xaml就无法创建的一个特定示例是DataTemplate。

您可以编写将从XAML字符串创建DataTemplate的代码,但不能在c#中直接向新建的DataTemplate添加子级。