2015-03-25 66 views
0

我有資源字典文件,在文件中.xaml.cs我有一個事件處理程序,如:如何從資源字典文件訪問事件處理程序?

private static bool OnlyNumbersAllowed(string text) 
     { 
      Regex regex = new Regex("[^0-9]+"); 
      return !regex.IsMatch(text); 
     } 

     private void PreviewTextInputHandlerInt(object sender, TextCompositionEventArgs e) 
     { 
      e.Handled = !OnlyNumbersAllowed(e.Text); 
     } 

雖然在主窗口中,我想訪問此代碼,如:

<TextBox Name="Par5" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="357,36,0,0" Width="120" 
PreviewTextInput="{DynamicResource PreviewTextInputHandlerInt}"/> 

哪個不行(資源無法解析)。 另外,我確實在字典中的根元素一些變化,比如:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        x:Class="network_app.Resources.ResDictionary" 
        x:ClassModifier="public"> 

我有機會從我的項目中許多其他窗口此事件處理程序,這就是爲什麼我不想複製事件處理程序的代碼遍佈這些代碼隱藏的窗口。是否有可能以某種方式訪問​​我的事件處理程序,在資源字典中聲明?謝謝。

+0

將異常處理程序在一個共同的(也許'static')class ... – MoonKnight 2015-03-25 11:36:26

+0

把'OnlyNumberAllowed'設爲'public'也不會傷害任何一個。 – Kilazur 2015-03-25 11:47:12

回答

0

好吧,我加入這個事情到resourcedictionary.xaml使這個:

<ControlTemplate x:Key="TextBoxInt"> 
    <TextBox PreviewTextInput="PreviewTextInputHandlerInt"/> 
</ControlTemplate> 

然後我訪問這個在主窗口XAML這樣的:

<TextBox Template="{StaticResource TextBoxInt}" Name="Par5" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="357,36,0,0" Width="120" /> 
相關問題