Control.LostFocus += Control_LostFocus;
private void Control_LostFocus(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
Control.TextChanged += Control_TextChanged;
}
private void Control_TextChanged (object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
MessagingCenter.Send<object>(this, Messaging.Edited);
}
这是我们绑定的方式所以每次打开页面时它都会更新值,这也会触发TextChanged
public string Binding
{
get { return _binding; }
set { Set(ref _binding, value); }
}
它应用于自定义渲染器,因为我需要一次验证多个Entry。
我订阅了这些事件以验证在编辑模式期间Entry值是否已更改。但是条目使用绑定,因此它检测到值已经改变,这就是我首先使用LostFocus的原因。
在事件中订阅事件有多错误?
我是编程的新手,我的同事告诉我重构它,因为它可能会导致性能问题。
解决方法是什么?
感谢您的回答。
答案 0 :(得分:0)
我不熟悉WPF。但是,如果您在代码中设置绑定和订阅事件,则可以尝试在绑定代码之后订阅事件。例如:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
MyDataSource ds = new MyDataSource { Name = "Hello World" };
Binding b = new Binding("Name");
b.Source = ds;
tb.SetBinding(TextBox.TextProperty, b); // tb is of type TextBox
tb.TextChanged += Tb_TextChanged; // subscribe event after binding
}
private void Tb_TextChanged(object sender, TextChangedEventArgs e)
{
lbl.Content = tb.Text; // lbl is of type Label
}
}
public class MyDataSource
{
public string Name { get; set; }
}