.NET applications however rely on the ciphers provided by the OS, and the only way to get new ciphers into the OS is through a patch from Microsoft. Unsupported versions of Windows typically do not receive these patches, so over time you can expect an increasing number of websites to stop working with .NET applications.
اشتراکها
پایان پشتیبانی از افزونه فایرباگ
وبلاگها ، سایتها و مقالات ایرانی (داخل و خارج از ایران)
- تمامی کتابخانه های تقویم خورشیدی شامل ۴۱ کتابخانه
- قالب فارسی جدید برای بلاگر
- فایرفاکس ۳ با محیط کاملا فارسی و غلط یاب فارسی
- ضعفهای امنیتی فایرفاکس بسیار بیشتر از IE است. (31 مورد IE در مقابل 115 مورد فایرفاکس در سال 2008)
- آشنایی با مایکروسافت Search Server
- دانلود سرویس پک دوم ویندوز ویستا برای عموم آزاد شد
- ابزار ThreadWorker برای انجام کارها در پشت صحنه در دلفی
- نگاهی دیگر به مشخصات و مولفههای تکنیکی مرورگر کاربران ایرانی
- کارگاه برنامهنویسی وب
- چه زمانی از کنترلهای سفارشی در برنامهمان استفاده کنیم
امنیت
Visual Studio
ASP. Net
طراحی و توسعه وب
- آشنایی با JSONP
- از فلش استفاده نکنید!
- ارائه jQuery UI 1.7 و مصاحبهای با خالق آن
- آنچه که در مورد jQuery UI 1.7 باید بدانید.
- آیا HTML Validation اهمیت دارد؟
- بیش از 2500 آیکون مجانی
- فرمهای زیباتری را طراحی کنید
PHP
اسکیوال سرور
سی شارپ
VB
عمومی دات نت
- RestPad
- آشنایی با تعدادی پروژهی سورس باز دات نت
- Introducing ADO.NET Data Services 1.5
- DebuggerDisplay Attribute
جاوا
ویندوز
- Windows 7 Release Candidate Preview
- آیا IE8 آخرین مرورگر مایکروسافت خواهد بود؟
- آشنایی با DFS در ویندوز سرور 2008
مسایل اجتماعی و انسانی برنامه نویسی
SVN
متفرقه
Please see the SQL Server Management Studio release notes for a comprehensive list of bug fixes.
اشتراکها
NET Core SDK 3.1.403. منتشر شد
MyTested.AspNetCore.Mvc is a strongly-typed unit testing library providing an easy fluent interface to test the ASP.NET Core MVC framework. It is testing framework agnostic so that you can combine it with a test runner of your choice (e.g. xUnit, NUnit, etc.).
اشتراکها
ثبت نام در Modern Workplace
Learn
what makes for a highly productive work environment from the Founder
and Principal Researcher of Programmable Habitats, Jennifer Magnolfi
Astill. And hear from David Fullerton, an expert on setting up highly
successful remote work programs and the author of “Seven Great Reasons
to Encourage Working Remotely.” Tune in to help you determine the best
mobile work environment solution for your company.
در نرم افزارهای تحت ویندوز روشها و سلیقههای متفاوتی برای چینش فرمها ، منوها و دیگر اجزای برنامه وجود دارد. در یک نرم افزار اتوماسیون اداری که فرمهای ورود اطلاعات زیادی دارد فضای کافی برای نمایش همهی فرمها به کاربر نیست. یکی از روش هایی که میتواند به کار رود تقسیم قسمتهای مختلف نرم افزار در Viewهای جداگانه است. این کار استفادهی مجدد از قسمتهای مختلف و نگهداری کد را سهولت میبخشد.
الگوی متداولی که در نرم افزارهای WPF و Silverlight استفاده میشود الگوی MVVM است. (این الگو در جاوااسکریپت هم به سبب Statefull بودن استفاده میشود.) قبلا مطالب زیادی در این سایت جهت آموزش و توضیح این الگوی منتشر شده است.
فرض کنید نرم افزار از چند بخش تشکیل شده :
- صفحهی اصلی
- منو
- یک صفحهی خوش آمدگویی
- صفحهی ورود و نمایش اطلاعات
می توان اجزا و تعریف هر یک از این قسمتها را در یک UserControl قرار داد و در زمان مناسب آن را بارگذاری کرد.
سوالی که مطرح است بارگذاری UserControlها به کمک الگوی MVVM چگونه است ؟
کدهای XAML صفحهی اصلی :
<Window x:Class="TwoViews.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Title="MVVM Light View Switching" d:DesignHeight="300" d:DesignWidth="300" DataContext="{Binding Main, Source={StaticResource Locator}}" ResizeMode="NoResize" SizeToContent="WidthAndHeight" mc:Ignorable="d"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <ContentControl Content="{Binding CurrentViewModel}" /> <DockPanel Grid.Row="1" Margin="5"> <Button Width="75" Height="23" Command="{Binding SecondViewCommand}" Content="Second View" DockPanel.Dock="Right" /> <Button Width="75" Height="23" Command="{Binding FirstViewCommand}" Content="First View" DockPanel.Dock="Left" /> </DockPanel> </Grid> </Window>
2 دکمه در صفحهی اصلی وجود دارد ، یکی از آنها وظیفهی بارگذاری View اول و دیگری وظیفهی بارگذاری View دوم را دارد ، این دکمهها نقش منو را در یک نرم افزار واقعی به عهده دارند.
کدهای View-Model گره خورده (به کمک الگوی ViewModolLocator ) به View اصلی :
/// This is our MainViewModel that is tied to the MainWindow via the /// ViewModelLocator class. /// </summary> public class MainViewModel : ViewModelBase { /// <summary> /// Static instance of one of the ViewModels. /// </summary> private static readonly SecondViewModel SecondViewModel = new SecondViewModel(); /// <summary> /// Static instance of one of the ViewModels. /// </summary> private static readonly FirstViewModel FirstViewModel = new FirstViewModel(); /// <summary> /// The current view. /// </summary> private ViewModelBase _currentViewModel; /// <summary> /// Default constructor. We set the initial view-model to 'FirstViewModel'. /// We also associate the commands with their execution actions. /// </summary> public MainViewModel() { CurrentViewModel = FirstViewModel; FirstViewCommand = new RelayCommand(ExecuteFirstViewCommand); SecondViewCommand = new RelayCommand(ExecuteSecondViewCommand); } /// <summary> /// The CurrentView property. The setter is private since only this /// class can change the view via a command. If the View is changed, /// we need to raise a property changed event (via INPC). /// </summary> public ViewModelBase CurrentViewModel { get { return _currentViewModel; } set { if (_currentViewModel == value) return; _currentViewModel = value; RaisePropertyChanged("CurrentViewModel"); } } /// <summary> /// Simple property to hold the 'FirstViewCommand' - when executed /// it will change the current view to the 'FirstView' /// </summary> public ICommand FirstViewCommand { get; private set; } /// <summary> /// Simple property to hold the 'SecondViewCommand' - when executed /// it will change the current view to the 'SecondView' /// </summary> public ICommand SecondViewCommand { get; private set; } /// <summary> /// Set the CurrentViewModel to 'FirstViewModel' /// </summary> private void ExecuteFirstViewCommand() { CurrentViewModel = FirstViewModel; } /// <summary> /// Set the CurrentViewModel to 'SecondViewModel' /// </summary> private void ExecuteSecondViewCommand() { CurrentViewModel = SecondViewModel; } }
این ViewModel از کلاس پایهی چارچوب MVVM Light مشتق شده است. Commandها جهت Handle کردن کلیک دکمهها هستند . نکتهی اصلی این ViewModel پراپرتی CurrentViewModel میباشد. این پراپرتی به ویژگی Content کنترل ContentControl مقید (Bind) شده است. با کلیک شدن روی دکمهها View مورد نظر به کاربر نمایش داده میشود.
WPF از کجا میداند کدام View را به ازای ViewModel خاص render کند ؟
در فایل App.xaml یک سری DataTemplate تعریف شده است :
<Application.Resources> <vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" /> <!-- We define the data templates here so we can apply them across the entire application. The data template just says that if our data type is of a particular view-model type, then render the appropriate view. The framework takes care of this dynamically. Note that the DataContext for the underlying view is already set at this point, so the view (UserControl), doesn't need to have it's DataContext set directly. --> <DataTemplate DataType="{x:Type vm:SecondViewModel}"> <views:SecondView /> </DataTemplate> <DataTemplate DataType="{x:Type vm:FirstViewModel}"> <views:FirstView /> </DataTemplate> </Application.Resources>
به کمک این DataTemplateها مشخص شده اگر نوع دادهی ما از یک نوع View-Model خاص میباشد View مناسب را به ازای آن Render کند. با تعریف DataTemplateها در App.Xaml میتوان از آنها در سطح نرم افزار استفاده کرد. میتوان DataTemplateها را جهت خلوت کردن App.xaml به Resource دیگری انتقال داد.
دریافت مثال : TwoViews.zip