在选定的选项卡中从 ManWindow 触发事件
Fire event from ManWindow in selected tab
如果之前有人问过这个问题,我很抱歉。
在这里搜索了 1 小时后我找不到它。
首先,我使用的是 WPF,而不是 MVVM。我知道 MVVM 是可行的方法,我正在学习它。我是编程新手。
它是一个小程序,我在一个 StackPanel 的主 window 上有按钮,在另一个 StackPanel 上有 TabControl (_tabcntrl)。
单击主按钮window 生成一个选项卡:
TabItem _tab = new TabItem();
UserControl _uc = new UserControl();
_tab.Content = _uc;
_tabcntrl.Items.Add(tab);
在用户控件中我有一个 public 事件
public void test()
{
//some code
}
所以我的问题是如何从主 window 触发此事件(在主 window 中单击按钮),但仅限于选定的选项卡。想法是您可以拥有多个具有相同用户控件的选项卡。
我知道我可以做到
_uc.test();
但仅在创建选项卡时。
我也试过
TabItem tb = _tabcntrl.SelectedItem;
tb.test();
在按钮点击事件中,出现错误。
愚蠢的事情是我弄清楚了如何从用户控件触发事件,但我别无选择。第一次问这个感觉很蠢。
谢谢,抱歉我的英语不好
有多种选择,您可以寻找 VisualTree
或简单地使用 Control
的 Children
属性 并找到相应的元素。
TabItem tb = _tabcntrl.SelectedItem;
var childControls = control.Children.OfType<UserControl>(); // your controltype
// I'm looping through all child controls of type 'UserControl' but you can customize to your case.
foreach(var control in childControls)
{
// execute control logic here
control.test();
}
如果之前有人问过这个问题,我很抱歉。 在这里搜索了 1 小时后我找不到它。
首先,我使用的是 WPF,而不是 MVVM。我知道 MVVM 是可行的方法,我正在学习它。我是编程新手。
它是一个小程序,我在一个 StackPanel 的主 window 上有按钮,在另一个 StackPanel 上有 TabControl (_tabcntrl)。
单击主按钮window 生成一个选项卡:
TabItem _tab = new TabItem();
UserControl _uc = new UserControl();
_tab.Content = _uc;
_tabcntrl.Items.Add(tab);
在用户控件中我有一个 public 事件
public void test()
{
//some code
}
所以我的问题是如何从主 window 触发此事件(在主 window 中单击按钮),但仅限于选定的选项卡。想法是您可以拥有多个具有相同用户控件的选项卡。
我知道我可以做到
_uc.test();
但仅在创建选项卡时。
我也试过
TabItem tb = _tabcntrl.SelectedItem;
tb.test();
在按钮点击事件中,出现错误。
愚蠢的事情是我弄清楚了如何从用户控件触发事件,但我别无选择。第一次问这个感觉很蠢。
谢谢,抱歉我的英语不好
有多种选择,您可以寻找 VisualTree
或简单地使用 Control
的 Children
属性 并找到相应的元素。
TabItem tb = _tabcntrl.SelectedItem;
var childControls = control.Children.OfType<UserControl>(); // your controltype
// I'm looping through all child controls of type 'UserControl' but you can customize to your case.
foreach(var control in childControls)
{
// execute control logic here
control.test();
}