|
Программирование >> Программирование с использованием ajax
<Ellipse.BitmapE££ect> <OuterGlowBitmapEffect GlowColor= #FFFFFFFF GlowSize= 16 /> </Ellipse.BitmapEffect> </Ellipse> </Grid> </Window> 4. Измените код в файле Windowi. xaml. cs, как показано ниже: using System.Windows.Shapes; using System.ServiceModel; using System.Windows.Media.Animation; namespace Ch35Ex03 { / <summary> / Логика взаимодействия для Windowi.xaml / </summary> public partial class Windowi : Window { private AppControlService service; private ServiceHost host; public Windowi() { InitializeComponent(); private void Window Loaded(object sender, RoutedEventArgs e) { service = new AppControlService (this) ; host = new ServiceHost (service) ; host.OpenO ; private void Window Closing(object sender. System.ComponentModel.CancelEventArgs e) host.Close 0; internal void SetRadius (double radius, string foreTo, TimeSpan duration) { if (radius > 200) { radius = 200; Color foreToColor = Colors.Red; foreToColor = (Color)ColorConverter.ConvertFromString(foreTo) ; catch { Игноррфовать неудачные попытки преобразования цвета. Duration animationLength = new Duration (duration) ; DoubleAnimation radiusAnimation = new DoubleAnimation ( radius * 2, animationLength); ColorAnimation ColorAnimation = new ColorAnimation ( foreToColor, animationLength); AnimatableEllipse. BeginAnimation (Ellipse. HeightProperty, radiusAnimation); AnimatableEllipse. BeginAnimation (Ellipse. WidthProperty, radiusAnixnation); ((RadialGradientBrush)AnimatableEllipse.Fill) .GradientStops [1] .BeginAnimation(GradientStop.ColorProperty, ColorAnimation); 5. Измените код в IAppControlService.es следующим образом: [ServiceContract] public interface lAppControlService { [OperationContract] void SetRadius(int radius, string foreTo, int seconds) ; 6. Измените код в AppControl Service. cs следующим образом: [ServiceBeliavior (InstanceContextMode=InstanceContextMode . Single) ] public class AppControlService : lAppControlService private Windowl hostip; public ipControlService (Windowl hostip) this.hostip = hostApp; public void SetRadius (int radius, string foreTo, int seconds) { hostApp.SetRadius(radius, foreTo, new TimeSpan(0, 0, seconds)); 7. Измените код в app. conf ig следующим образом: <configuration> <system.serviceModel> <services> <service name= Ch35Ex03.JpControlService > <endpoint address= net.tcp: localhost:8081/ipControlService binding= netTcpBinding contract= Ch35Ex03.IJpControlService /> </service> </services> </system.serviceModel> </configuration> 8. Добавьте в проект новое консольное приложение по имени Ch35ExO301 lent. 9. Сконфигурируйте решение как имеющее несколько стартовых проектов, причем так, чтобы оба созданных ранее проекта запускались одновременно. 10. Добавьте в проект C]i35Ex03Client ссылку на System.ServiceModel.dll и C]i35Ex03. 11. Измените код в Program, cs следующим образом: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Ch35Ex03; using System.ServiceModel; namespace Ch35Ex03Client { class Program { static void Main(string [ ] args) { Console.WriteLine( Press enter to begin. ); Нажмите Enter, чтобы начать работу Console.ReadLine(); Console.WriteLine( Opening channel... ); Открытие канала IAppControlService client = ChannelFactory<IAppControlService>.CreateChannel( new NetTcpBinding () , new EndpointAddress( net.tcp: localhost:8081/AppControlService )), Console.WriteLine( Creating sun... ); Создание солнца client.SetRadius(100, yellow , 3) ; Console.WriteLine( Press enter to continue. ); Нажмите Enter, чтобы продолжить Console.ReadLine(); Console.WriteLine( Growing sun to red giant... ); Увеличение солнца до красного гиганта client.SetRadius(200, Red , 5); Console.WriteLine( Press enter to continue. ); Нажмите Enter, чтобы продолжить Console.ReadLine(); Console.WriteLine( Collapsing sun to neutron star... ); Коллапс солнца в нейтронную звезду client.SetRadius(50, AliceBlue , 2); Console.WriteLine( Finished. Press enter to exit. ); Процесс завершен. Нажмите Enter, чтобы выйти Console.ReadLine(); 12. Запустите решение. Если появится соответствующее приглашение, разблокируйте ТСР-порт брандмауэра Windows, чтобы служба WCF могла начать ожидание подключений. 13. Когда появится окно Solar Evolution (Эволюция солнца) и окно консольного приложения, нажмите в окне консольного приложения клавишу <Enter>. На рис. 35.7 показан результат, который должен получиться. 14. При желании продолжить цикл эволюции солнца снова нажмите клавишу <Enter>. Описание полученных результатов в данном примере мы добавили в WPF-приложение WCF-службу и использовали ее для управления анимационными эффектами элемента управления Ellipse, после чего создали простое клиентское приложение для ее тестирования. Тем, кто пока не слишком знаком с WPF, не стоит особо волноваться об XAML-коде в этом примере, поскольку здесь больше интересуют детали кода WCF
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |