2012-06-27 41 views
0

我在Silverlight 5中創建了一個簡單的應用程序來測試另一個應用程序從中獲取數據的能力。目標是儘可能多的輸入類型來測試其他應用程序的多功能性。我想要一個datepicker添加到該表單的一部分與下面的代碼:如何在Silverlight 5中使DatePicker的Textbox組件只讀?

<sdk:DatePicker Grid.Row="3" Grid.Column="3" Height="25" Width="190" > 
</sdk:DatePicker> 

這工作完全正常,但我想做出的DatePicker的文本框組件只讀。原因是我只希望將有效日期輸入到此文本框中,因爲我隨後將文本從中拉出並放入DataGrid中。任何幫助,將不勝感激!如果你需要更多的信息,請問。

回答

2

創建自己的控制,從DatePicker的繼承:

using System.Windows.Controls.Primitives; 

public class ReadonlyDatePicker : DatePicker 
{ 
    public override void OnApplyTemplate() 
    { 
     base.OnApplyTemplate(); 
     var textBox = this.GetTemplateChild("TextBox") as DatePickerTextBox; 
     textBox.IsReadOnly = true; 
    } 
} 

的命名空間添加到您的項目在您的網頁:

xmlns:MyControls="clr-namespace:MyControlsNamespace" 

然後使用您的命名空間別名引用您的DatePicker:

<MyControls:ReadonlyDatePicker Grid.Row="3" Grid.Column="3" Height="25" Width="190" > 
</MyControls:ReadonlyDatePicker> 
+0

太棒了,非常感謝!這正是我所需要的,在實現它的過程中,我學會了如何實現用戶創建的控件。這是我第一次使用Silverlight,所以你的幫助對我來說非常有價值。 感謝您編輯您的答案,使其更容易理解。我能夠自己發現,但希望如果其他人也有同樣的問題,他們也可以從中學習。 –

+0

非常歡迎。 :) –

+0

我需要添加這一行。 'textBox.IsEnabled = false;' – user2087520

相關問題