[英]How to call treeView.SelectedItemChanged programmatically
In my program I would like to call to a SelectedItemChanged
event using c# code-behind, I am just unsure about what to pass as parameters. 在我的程序中,我想使用c#代码背后的方法来调用
SelectedItemChanged
事件,我只是不确定要作为参数传递什么。 This is for a TreeViewItem
. 这是针对
TreeViewItem
。
//Gets selected item in TreeView
private void TreeOne_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
MainWindowViewModel.SelectedItem = e.NewValue as TreeViewItem;
}
//I'm calling the SelectedItemChanged event from a RightButtonDown event
private void TreeOne_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
TreeOne_SelectedItemChanged(/* What would go here? **/);
}
Also, when I try to build this I receive this compiler error that pretty much led to this question... 另外,当我尝试构建它时,我收到此编译器错误,几乎导致了这个问题...
No overload for method
TreeOne_SelectedItemChanged
takes '0' arguments方法
TreeOne_SelectedItemChanged
重载没有接受'0'参数
I'm hoping that this is an easy question, but if I have not provided enough information, or haven't been clear enough please let me know. 我希望这是一个简单的问题,但是如果我没有提供足够的信息,或者不清楚的地方,请告诉我。
Adding to @Bart Friederichs' answer and assuming that you have a reference to your TreeView
, you could add the following method: 添加到@Bart Friederichs的答案,并假设您对
TreeView
有引用,则可以添加以下方法:
private void SetSelectedItem()
{
MainWindowViewModel.SelectedItem = TreeOne.SelectedItem;
}
Then you can simply call this from wherever you like: 然后,您可以随时随地调用此方法:
private void TreeOne_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
SetSelectedItem();
}
private void TreeOne_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
SetSelectedItem();
}
The usual design pattern would be to call some kind of processing method, and not to "manually" fire events: 通常的设计模式是调用某种处理方法,而不是“手动”触发事件:
private TreeOne_SelectedItemChaned(object sender,
RoutedPropertyChangedEventArgs<object> e) {
processChange();
}
Then, from withing your code, you just call processChange()
, no need to call TreeOne_SelectedItemChanged
. 然后,从处理代码开始,您只需调用
processChange()
,而无需调用TreeOne_SelectedItemChanged
。
try to call 尝试打电话
TreeOne_SelectedItemChanged(null, null); TreeOne_SelectedItemChanged(null,null);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.