2010年12月4日 星期六

WPF 在 XAML 中靜態成員的參考

參考物件成員

在XAML 中如果要Binding 某個物件時, 可以在Resources 中定義邏輯資源, Ex:

image

圖中被圈選這行會在初始化時在記憶體建立一個型別為Product的物件 (呼叫其建構函式). 在XAML中參考這個資源時, 可以使用StaticResource 或是 DynamicResource 關鍵字.

參考靜態成員

但如果類別只有靜態成員 (且不可呼叫instance 的建構函式), 又要Binding 到控制項時, 就不能使用將之定義在邏輯資源中了. 因為會在初始化時呼叫建構函式時出現錯誤.

這時後就要用{x: Static 類別.靜態成員}, Ex:

image

2010年10月23日 星期六

圖檔放在dll 中, 如何在網頁中動態參考?

這是同學在ASP.NET課程問的問題.

解法

step1: 建立Class Library

step2: Add Reference : System.Web

step3: 將圖檔放入專案中, 並設定檔案屬性為 – Embedded Resource

step4: 在Class1.cs 的 Class 之前 宣告 WebResource

using System.Web.UI;

[assembly: WebResource("命名空間.圖檔.gif", "image/gif")]

step5: Build 專案

step6: 在Web Site –> Add Reference –> step1 的 Class Library

step7: 在網頁上放入Image或ImageButton

step8: 在Page_Load 事件 --

Page.ClientScript.RegisterClientScriptResource(typeof(MyScript.Class1), "MyScript.button_more07.gif");

ImageButton1.ImageUrl = ClientScript.GetWebResourceUrl(typeof(MyScript.Class1), "MyScript.button_more07.gif");

 

完成.

2010年10月8日 星期五

WPF MVVM 的專案Template 下載

開發WPF應用程式的Design Pattern – Model-View-ViewModel.

若要開發需自行從WPF 應用程式專案建立MVVM所需的基本內容, 如果需要像ASP.NET 的MVC 從專案範本建立, 可以從 New Project 的左邊畫面按 [Online] –> WPF , 右邊畫面 雙擊 [WPF MVVM Application] 即可下載安裝這個範本 .

WPF MVVM Application 專案範本

建立專案之後便可看到Solution Explorer 已經先建立好必要的目錄及類別:

WPF MVVM Project

2010年7月6日 星期二

Visual Basic 2010 開發實戰及書系即將上市囉~

努力了半年之久, 終於完成了!!


天瓏有預售唷!!

2010年6月11日 星期五

ASP.NET Chart 控制項部署問題

最近將有包含用到Chart 控制項進行部署到iis, 部署後執行出現這個錯誤:

image

跟著網頁提示的錯誤訊息進行修正:

  1. 在Web.config 的<system.webServer>區段加上:
    <validation validateIntegratedModeConfiguration="false"/>
  2. 配合以下設定, 在C磁碟建立 TempImageFiles 目錄: 
    <appSettings>
      <add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\TempImageFiles\;" />
    </appSettings>

重新部署後就可以順利執行了!!

image

2010年3月30日 星期二

VS2010 的 Crystal Report 不見了!

負責Crystal Report 產品的同事告訴我說, VS2010裡不會在放Crystal Report, 必須另外下載!

拿到VS2010 Beta 時打開VS的專案範本, 有看到Crystal Report的範本:

1

一直很疑惑, 有啊!! 還在啊!!

昨天心血來潮真的去開一個Crystal Report的專案, 得到這個畫面:

2

果然, 需要另外下載…

是 Microsoft 有了自家的 Report 產品, 就不主動內建Crystal Report , 還是其他原因呢? (不得而知)

不過, 至少還留著專案範本, 留個Download 的 Link 位置, 也算是一種友善吧!!

2010年3月25日 星期四

WPF資料繫結的驗證方式

WPF資料繫結的驗證方式作法有三種:

  1. 使用ValidationRules
  2. 使用ValidatesOnDataErrors
  3. 使用ValidatesOnDataException

這三種方式都是Bindng物件的屬性, 作法卻不大相同.

使用ValidationRules

必須建立一個類別並繼承ValidationRule, 在裡頭的Validate方法撰寫驗證程式碼.

然後在XAML上必須這樣寫:

<DatePicker Grid.Column="1" Grid.Row="2" Name="DatePicker1" >

<DatePicker.SelectedDate>

<Binding Path="CreationTime">

<Binding.ValidationRules>

<local:DateRangeValidationRule />

</Binding.ValidationRules>

</Binding>

</DatePicker.SelectedDate>

</DatePicker>

這是最早出現的作法(.net 3.0), 好處是驗證邏輯是獨立的類別可以重複使用, 缺點是太複雜了!!

***Silverlight 並不支援這種做法.***

使用ValidatesOnDataErrors

只要在資料來源的類別中實作IDataErrorInfo介面, 在Item索引子中實作檢查欄位驗證的邏輯.

然後只要設定Binding物件的ValidatesOnDataErrors屬性為True就會有效果.

.net 3.0sp1以後才有的功能. 好處是可以直接在資料來源的類別實作檢查欄位驗證的邏輯. 缺點是驗證邏輯無法重複使用 (不過驗證邏輯需要重複使用的機會有多少?).

***Silverlight有支援這種做法.***

使用ValidatesOnDataException

直接在資料來源的類別中的屬性的Set區段中撰寫驗證邏輯, 並在驗證發生問題時丟出錯誤(throw exception)

但在XAML中要設定ValidatesOnDataException為True及ValidationRules指為ValidatesOnExceptions.

<Binding Path="CreationTime" ValidatesOnDataException=True>
<Binding.ValidationRules>    
     <ExceptionValidationRule />
</Binding.ValidationRules>
</Binding>

.net 3.0sp1以後才有的功能. 好處是類別的程式碼寫法比較直覺, 也不需實作任何介面. 缺點是還是要手動打XAML(Visual Studio 2010有Binding 的屬性視窗, 但並沒有ValidationRules的選項, 所以要自己打XAML)

***Silverlight有支援這種做法.***

2010年3月24日 星期三

我愛Visual Basic 2010

LINQ語法是可以是一串很長的指令, 在C#裡並不覺得很長的指令有什麼困擾, 反正按個Enter 換行就好, 程式仍可以很好閱讀.

於是Visual Basic 2010 為了LINQ語法新增一個功能, 就是可以在很長的LINQ或方法參數上換行不需加上”空白 底線”

不用加空白底線

雖然早就在Visual Basic 2010的Beta 版就知道這項功能, 但這次寫書用到大量很長的Visual Basic程式時…

心中不免讚嘆”我愛Visual Basic 2010”!!

2010年3月20日 星期六

在Expression Blend 4 畫星星


在Blend 3 的專案裡想畫出除了方形與圓形外的形狀, 有兩個方式:
1. 使用畫筆
2. 使用Expression Design的形狀工具做出要的形狀 (例如星星), 然後copy & paste 到Blend

你還有想到其他方式嗎?
總而言之, 就是Blend 3裡不能像PowerPoint 有常用形狀讓你直接使用...

Blend 4有改進了唷, 最近下載Blend 4 Beta (2010/3/16公佈的) 版本在Asserts(資產) 看到Shapes 項目有18種形狀可以選取. 讚啦!! (對於未受畫圖訓練的我來說, 至少有一些基本形狀可以使用)

Shapes

2010年3月16日 星期二

Silverlight 4 RC 及Expression Blend 4 Beta 發佈

Silverlight 4 RC 已發佈
Visual Studio 2010 RC 因為是比較早發佈, 內建的是Silverlight 3 SDK,
若要在Visual Studio 2010 RC 上開發SL4, 要再安裝Silverlight 4 Tools for Visual Studio 2010
& Silverlight 4 Toolkit.
另外Expression Blend 4 Beta 也已於3/12/2010 發佈了, 它的專案可以與Visual Studio 2010 RC 相容. 同時它的文件上寫說可以與Blend 3 並行安裝
細節參考http://silverlight.net/getstarted/silverlight-4/

3/12/2010 發佈的Expression Blend 4 Beta 下載位址http://www.microsoft.com/downloads/details.aspx?FamilyID=6f014e07-0053-4aca-84a7-cd82f9aa989f&displaylang=en

2010年1月24日 星期日

Installer 類別裡如何取得實際安裝路徑?

會被帶入 Context.Parameters 的參數裡, 安裝路徑的名稱是"assemblypath"
可以用以下程式追蹤得知安裝程式還帶那些參數進去.

public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
string msg = "";
foreach (DictionaryEntry entry in this.Context.Parameters)
{
msg += entry.Key + "," + entry.Value + "\r\n";
}
MessageBox.Show("Install..." + msg);
}

如何清除GAC 的Download cache?

很簡單
gacutil /cdl

就可以了~

參考: http://florent.clairambault.fr/gac-download-cache