وبلاگ مصطفی ستاری

یک وبلاگ برنامه نویسی دیگر

یک وبلاگ برنامه نویسی دیگر

۲ مطلب با موضوع «سیکوئل» ثبت شده است

سوئیچ کردن بین Viewها در WPF هنگام استفاده از الگوی MVVM

یکی از مسائلی که در ابتدای کار با MVVM ممکن است گیج کننده به نظر برسد سوئیچ کردن بین نماهای مختلف (Views) است.

برای اینکار چند روش وجود دارد.

استفاده از DataTemplate

فرض کنید در پنجره اصلی برنامه‌تان ۲ ویو به نام‌های خانه و کار داریم. برای مشخص کردن ویو جاری در ViewModel پنجره اصلی یک پراپرتی ایجاد می‌کنیم:

public class MainViewModel
{
    public ViewModelBase CurrentView {get; set;}
}

سپس محتوای کنترل کانتنت پنجره اصلی را به این متغیر بایند می‌کنیم:
<ContentControl Content="{Binding CurrentView}" />
در نهایب برای هر VM یک تمپلت ایجاد می‌کنیم تا بر اساس مقدار پراپرتی CurrentView که با کانتنت کنترل بایند شده، دیتاتمپلت مشخص کند که کدام ویو باید لود شود.
<DataTemplate DataType="{x:Type HomeViewModel}">
    <TextBlock Text="This is the Home Page" />
</DataTemplate>

<DataTemplate DataType="{x:Type WorkViewModel}"> <localControls:WorkViewUserControl /> </DataTemplate>

استفاده از DataTrigger

گاهی ممکن است به جای یک نوع بخواهیم بر اساس مقدار یک پراپرتی ویو را عوض کنیم. در این صورت می‌توانیم از دیتاتریگرها استفاده کنیم. مثلا در همان مثال بالا در صورتی که به جای اینکه CurrentView نوع ViewModel رو مشخص کند، نام آن رو ذخیره کند (مقداری رشته‌ای) آنگاه اینطور می‌توانیم عمل کنیم:
برای هر مقدار یک تمپلت تعریف می‌کنیم:
<DataTemplate x:Key="ViewOneTemplate" DataType="{x:Type ContentControl}">
<local:View1 />
</DataTemplate>

<DataTemplate x:Key="ViewTwoTemplate" DataType="{x:Type ContentControl}">
<local:View2 />
</DataTemplate>
آنگاه با یک دیتا تریگر بین این دو تمپلت بر اساس مقدار پراپرتی، (در اینجا  CurrentView که از نوع رشته است) سوئیچ می‌کنیم.
<ContentControl>
<ContentControl.Style>
<Style TargetType="{x:Type ContentControl}">
<Setter Property="ContentTemplate" Value="{StaticResource ViewOneTemplate}" />
<Style.Triggers>
<DataTrigger Binding="{Binding CurrentView}" Value="View2">
<Setter Property="ContentTemplate" Value="{StaticResource ViewTwoTemplate}" />
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>

منبع: وبلاگ Rachel Lim که برای یادگیری WPF و MVVM بسیار عالیست!

مشکل کاربر sa در SQLServer Express

یه سری نکته‌های کوچیکی هست، بس که آدم کم باهاشون سروکله می‌زنه هی فراموش می‌کنه باز کلی گوگلی می‌کنه تا دوباره یادش بیاد. یکیش همین مشکل کاربر sa توی SQLServer هست.

موقعی که نسخه Express پایگاه‌داده SQLServer رو نصب می‌کنیم به صورت پیشفرض اون تیک Mixed Authentication نخورده و با اینکه پسورد رو برای sa تنظیم کردیم و فعالش هم کردیم و همه چیزش رو به راهه، باز هم لاگین نمی‌کنه. آخرش متوجه می‌شه آدم که یادش رفته این قابلیت رو فعال کنه!

بعد از انجام عملیات، سرویس رو ریست کنید.