2011年2月21日 星期一

使用PresentationTraceSources.TraceLevel除錯

WPF在進行DataBinding的過程中,若發生錯誤,並不會以未處理的Exception型式告知,因此你將無法寫程式利用傳統的try..catch區塊來捕捉錯誤,你可以利用 PresentationTraceSources.TraceLevel來得知更多錯誤資訊幫助除錯,例如有一個WPF程式包含以下類別



public class MyUser {
       public string UserName { get; set; }       
   }

文字方塊繫結如下
<TextBox>
           <TextBox.Text>
               <Binding Path="Name" />
           </TextBox.Text>
       </TextBox>

MainWindow Contructor如下
public MainWindow() {
          InitializeComponent();
          this.DataContext = new MyUser() {  UserName = "Mary" };
      }

執行後檢視Output Window只看到Error 40的訊息
image
重寫一下設定,Textbox設定TraceLevel為High

<Window x:Class="P5_21_TraceLevel.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525"
       
         xmlns:diag="clr-namespace:System.Diagnostics;assembly=WindowsBase"
        >
    <Grid x:Name="roor">    
        <TextBox>
            <TextBox.Text>
                <Binding Path="Name"
               diag:PresentationTraceSources.TraceLevel="High"/>
            </TextBox.Text>
        </TextBox>
    </Grid>
</Window>

適當設定Visual Studio 2010 Debugging
image

重Run,Output window會多顯示更多的資訊出來
image

2011年2月17日 星期四

從Visual Studio 2010切換WPF開發專案到Blend 4

使用Visual Studio 2010開發WPF專案時,無法直接切換到Blend 4,,解決方式是下載擴充程式 Blend it!

1

選Download下載BlendItSetup.msi檔案,然後直接安裝

之後在Solution Explorer,選Solution就可以選Blend it!切換到Blend 4.

image

2011年2月16日 星期三

WPF 資料繫結

今有WPF Windows 變數如下
string sample="sample1234";
WPF Window的XAML之中包含一個TextBlock
<TextBlock Height="23"  Text="{Binding }" HorizontalAlignment="Left" Margin="221,43,0,0" Name="textBlock1"  VerticalAlignment="Top" Width="95"  />
只要設定Text為{Binding},然後在Window_Loaded事件加上這行
textBlock1.DataContext = sample;
執行就會自動將變數sample的內容,繫結到TextBlock的Text屬性。
若是使用TextBox,可以在Window中宣告屬性
private string _hi;
public string HI { get { return "HI"; } set { _hi = value; } }
XAML
<TextBox Height="23" Text="{Binding Path=HI,Mode=TwoWay}" HorizontalAlignment="Left" Margin="210,113,0,0" Name="textBox1" VerticalAlignment="Top" Width="120"  />
Window_Loaded事件加上這行
textBox1.DataContext = this;

總瀏覽量