0

我有一个名为的窗口MainWindow,其中包含 2 个用户控件:

SearchBox

CustomerList

当有人输入 SearchBox 时,我想相应地更改 CustomerList。

问题:CustomerList知道TextChanged事件已经执行的最佳方法是SearchBox什么?

现在我SearchBox定义为:

public class SearchSubmittedEventArgs : EventArgs
{
    public string Term { get; set; }

    public SearchSubmittedEventArgs(string term)
    {
        Term = term;
    }
}

public partial class SearchBox : UserControl
{
    public event EventHandler<SearchSubmittedEventArgs> SearchSubmitted;
    public SearchBox()
    {
        InitializeComponent();
    }

    private void SearchTextBox_TextChanged(object sender, TextChangedEventArgs e)
    {
        if (SearchSubmitted != null) SearchSubmitted.Invoke(this, new SearchSubmittedEventArgs(((TextBox)sender).Text));
    }
}

MainWindow具有以下 XAML 和 EventHandler:

<UserControls:SearchBox SearchSubmitted="SearchSubmitted_Invoked" />

private void SearchSubmitted_Invoked(object sender, SearchSubmittedEventArgs e)
{
    // I know SearchBox has been typed into

    // but I don't know how best to inform CustomerList
}

我需要从 to 传递事件SearchSubmitted_InvokedCustomerList?有没有办法让我直接从SearchBoxto传递它CustomerList

4

2 回答 2

3

我认为您可以订阅该活动...类似以下内容:

 var search = new SearchBox();
 var cust = new CustomerList();
 search.SearchSubmitted += (s,e)=>{ cust.Update(e.Term); }

希望它可以帮助您找到前进的方法...

于 2012-07-20T10:17:41.027 回答
0

这些控件彼此靠近吗?然后在里面烘焙一个新的用户控件可能是有意义的。该外部用户控件应该进行事件处理。

于 2012-07-20T13:25:56.903 回答