WPF,检测您要从哪个选项卡导航离开

本文关键字:选项 导航 离开 检测 WPF | 更新日期: 2023-09-27 18:35:10

我有一个带有多个选项卡的WPF应用程序。 在每个选项卡下,用户可以更改某些设置(使用复选框,文本框等),然后用户必须单击"更新"按钮才能保存这些设置。 一切正常,但要求之一是提醒用户,如果他尝试切换到其他选项卡而不单击"更新"按钮。所以我正在尝试使用

TabItem_LostFocus
事件

处理程序来实现它,但每次我单击选项卡中的某些内容时都会触发此事件。 我想我可以通过放置来修补这个问题

e.Handled = true

对于我拥有的每个控件,但这听起来不像是一个优雅的解决方案(尤其是当我没有选项卡下所有内容的单击事件处理程序时)。 有没有其他方法可以确定何时离开当前选项卡?谢谢

WPF,检测您要从哪个选项卡导航离开

若要实现要求,只需将数据绑定到TabControl.SelectedIndexTabControl.SelectedItem属性:

<TabControl ItemsSource="{Binding TabItemCollection}" 
    SelectedItem="{Binding SelectedTabItem}" />

然后在视图模型或代码隐藏中:

private YourDataType selectedItem;
public YourDataType SelectedItem
{
    get { return selectedItem; }
    set
    {
        // selectedItem represents the previous TabItem
        // value represents the new TabItem
        selectedItem = value;
    }
}

您可以绑定到每个TabItemIsSelected 属性 .. 然后在 setter 中进行检查

<TabControl>
    <TabItem IsSelected="{Binding TabItem1IsSelected}"/>
</TabControl>

财产:

public bool TabItem1IsSelected
{
    get { return _tabItem1IsSelected; }
    set
    {
        if (_tabItem1IsSelected)
        {
            if (!value)
            {
                // Check to see if user has updated
                if (!userUpdated)
                {
                    value = true;
                }
            }
        }
        _tabItem1IsSelected = value;
        RaisePropertyChanged();
    }   
}