如何从资源字典文件中访问事件处理程序?

时间:2015-03-25 11:30:50

标签: c# wpf

我有一个资源字典文件,在.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">

我可以从项目中的许多其他窗口访问此事件处理程序,这就是为什么我不想在代码隐藏中复制这些窗口中的事件处理程序代码。有可能以某种方式访问​​我在资源字典中声明的事件处理程序吗?感谢。

1 个答案:

答案 0 :(得分: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" />