我使用this代碼來模擬我的Silverlight應用程序中的選項卡功能。作爲xaml中的事件處理函數的靜態函數
我真的很想避免寫這個函數很多次,因爲它必須在整個應用程序的很多文本框中使用。我創建了一個靜態類
public static class TabInsert
{
private const string Tab = " ";
public static void textBox_KeyDown(object sender, KeyEventArgs e)
{
TextBox textBox = sender as TextBox;
if (e.Key == Key.Tab)
{
int selectionStart = textBox.SelectionStart;
textBox.Text = String.Format("{0}{1}{2}",
textBox.Text.Substring(0, textBox.SelectionStart),
Tab,
textBox.Text.Substring(textBox.SelectionStart + textBox.SelectionLength, (textBox.Text.Length) - (textBox.SelectionStart + textBox.SelectionLength))
);
e.Handled = true;
textBox.SelectionStart = selectionStart + Tab.Length;
}
}
}
,這樣我可以從各個地方訪問它liek這個textBox.KeyDown += TabInsert.textBox_KeyDown;
有沒有一種方法可以讓我在XAML做到這一點?
在XAML中,你會做<我:Interaction.Behaviors><地方:TabInsertBehavior /> I :Interaction.Behaviors> –
我絕對贊同xyzzer - 附加的行爲是一個很好的解決方法。 (另見[如何在代碼中附加行爲](http://geekswithblogs.net/SilverBlog/archive/2009/09/22/behaviors-how-to-attach-behavior-in-code-behind-silverlight-3 .aspx)) – DmitryG
我同意,但這隻會建立一個非常討厭的XAML,至少我想有,因爲有很多文本框需要此功能... –