只要用過 WCF 或是 ASP.NET,就會發現裡面的 Attribute Class,都會限定使用範圍,例如只能用在 class 上或是 property,其實自訂的 Attribute class 也是可以有相同效果的。
在 Attribute Class 上,只要加入以下這行程式碼:
[AttributeUsage(AttributeTargets.All)]
卑微研究生 發表在 痞客邦 留言(0) 人氣(425)
使用 Caliburn 寫程 Windows Phone App,通常 ViewModel 與 View 是一對一的對應。但對於一些習慣寫網頁的人來說,會覺得 Model 應該要能對應到不同的 View,例如某些頁面,運作的邏輯是相同的,只是因為不同的客製化需求,而需要不同的介面。或者是說,利用 Attribute 來指定對應的 View,而不是透過預設的規則。 在 Caliburn中,是可以透過增加額外的規則來達到前述的目的。首先新增下列 Attribute: [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = false)]
public class ViewAttribute : Attribute
{
public object Context { get; set; }
public Type ViewType { get; private set; }
public ViewAttribute(Type viewType)
{
ViewType = viewType;
}
}
卑微研究生 發表在 痞客邦 留言(0) 人氣(67)
看到標題不要誤會,本篇文章不是要講如何破解軟體序號。 對於想賣軟體營利的人來說,設計一個序號機制是個令人頭大的問題,剛好前陣子看到 SKGL,基本的功能它都有。像是基本的產生序號: Generate genKey = new Generate();
genKey.secretPhase = "mypassword"; //set your password
string sn = genKey.doKey(30);
Console.WriteLine(sn);
卑微研究生 發表在 痞客邦 留言(0) 人氣(125)
在 Caliburn.Mico 中要設定 User Control 的 view model,有以下兩種方式: <local:MyUserControl caliburn:Bind.Model="{Binding Model}"/>
<local:MyUserControl caliburn:Bind.Model="CaliburnDemoApp2.MyUserControlViewModel"/>
卑微研究生 發表在 痞客邦 留言(0) 人氣(16)
在 Caliburn.Micro 裡,設定 Event 非常方便,本篇文章將列出幾個常用的方法。
首先看看下列的 XAML 檔,當中只有一個按鈕,而且沒有設定 event。
<Page
x:Class="CaliburnDemoApp2.EventTestPage"
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"
xmlns:caliburn="using:Caliburn.Micro"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid>
<StackPanel>
<Button x:Name="TestButton1" Content="Event1"/>
</StackPanel>
</Grid>
</Page>
卑微研究生 發表在 痞客邦 留言(0) 人氣(38)

前一篇文章提到了如何利用 Caliburn.Micro 做 View 與 View Model 的 binding,但 App 通常不會只有一個頁面,而 Caliburn.Micro 簡化了 Navigation,可以讓程式設計師輕易的做換頁。 在開始介紹之前,先修改 App.xaml.cs 底下 OnLaunched 的程式碼: if (e.PreviousExecutionState != ApplicationExecutionState.Running)
{
//DisplayRootViewFor<MainPageViewModel>();
DisplayRootView<MainPage>();
}
卑微研究生 發表在 痞客邦 留言(0) 人氣(57)

在 ASP.NET MVC 中,通常會有對某些 Controller 底下的 Action 做 log 或是過濾 Request 的需求,而 ActionFilter 可以滿足這樣的需求,它是一個 Attribute,實作它之後只要宣告在 Action 上即可。
ActionFilter 有四個 method,分別是 OnActionExecuted、OnActionExecuting、OnResultExecuted、OnResultExecuting,而它的執行順序則是:
卑微研究生 發表在 痞客邦 留言(0) 人氣(565)

在微軟推出 XAML 後,就一直在推行 MVVM,它跟 MVC 的不同除了 Controller 外,就是在 Model 與 View 之間多了一個 View Model。而最近因為工作的關係,接觸到 Caliburn.Micro 這套 Framework。 本篇文章將會介紹如何利用 Caliburn.Micro 建立簡單的 Windows Phone App。首先建立 Windows Phone 8.1 專案後,在 NuGet 上搜尋 Caliburn.Micro 然後安裝它。 專案預設會建立 MainPage.xaml,修改如下: <Page
x:Class="CaliburnDemoApp2.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:CaliburnDemoApp2"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:caliburn="using:Caliburn.Micro"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid>
<Button x:Name="MyButton" Content="My Button" Margin="140,288,0,295" />
<TextBlock x:Name="MyTextBlock" HorizontalAlignment="Left" Margin="140,365,0,0" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top" Width="78"/>
</Grid>
</Page>
卑微研究生 發表在 痞客邦 留言(0) 人氣(273)
在之前的文章提到 C# 6.0 的一些新功能,本篇文章將會繼續補充前一篇沒提到的。 Collection Initializer 以往在宣告 Dictionary 物件時,會用到下列語法來加入初始值: Dictionary<string, string> dic = new Dictionary<string, string>
{
{"A","V1" },
{"B","V2" }
};
卑微研究生 發表在 痞客邦 留言(0) 人氣(471)
在 .Net 平台上,大多數的工程師都會選擇 Json.NET 來處理 JSON 資料,而我發現 Jil 這套在使用上更方便,官方也宣稱 Jil 的處理速度更快。 首先,來看看這個簡單的例子: TestClass t1 = new TestClass { Field1 = "f1", Field2 = "f2" };
string t1Json = JSON.Serialize<TestClass>(t1);
卑微研究生 發表在 痞客邦 留言(0) 人氣(179)