好的,我有一个用户控件,我想将其转换为WPF自定义控件。
用户控件有代码隐藏文件,所以我可以直接注册到控件事件: 例如:
<TextBox Grid.Column="0"
Name="valueBox"
TextAlignment="Right" TextChanged="valueBox_TextChanged" PreviewKeyDown="valueBox_PreviewKeyDown" />
后面代码中对应的valueBox_TextChanged事件是:
private void valueBox_TextChanged(object sender, TextChangedEventArgs e)
{
var textBox = (TextBox)sender;
var positiveWholeNum = new Regex(@"^-?\d+$");
if (!positiveWholeNum.IsMatch(textBox.Text) || int.Parse(textBox.Text) < 0)
{
textBox.Text = "0";
}
NumericValue = Convert.ToInt32(textBox.Text);
RaiseEvent(new RoutedEventArgs(ValueChangedEvent));
}
现在,当我尝试将其转换为自定义控件时,我有一个主题文件夹,带有Generic.Xaml文件。并且文件:MyCustomControl.cs
在Generic.Xaml中,我写过(我来自Control)
<TextBox Grid.Column="0"
Name="valueBox"
TextAlignment="Right" />
并在cs文件中:
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
AttachTextBox();
}
protected TextBox TextBox;
private void AttachTextBox()
{
var textBox = GetTemplateChild("valueBox") as TextBox;
if (textBox != null)
{
TextBox = textBox;
}
}
现在,我如何编写用户控件中写入的valueBox_TextChanged的替换?
答案 0 :(得分:0)
您可以在generic.xaml文件的代码隐藏中编写valueBox_TextChanged事件处理程序的代码。要为Generic.XAML创建fiel后面的代码,请按照以下步骤操作。
添加名为generic.xaml.cs的文件
Right click on themes folder and select new class
Name it as generic.xaml.cs
使用x:Class
将此代码隐藏文件链接到Gereric.xaml
现在,您可以在generic.xaml.cs文件中为generic.xaml元素编写代码。