【问题标题】:How to Get Selected Item On Button Click Placed Under WPF TabControl如何在WPF TabControl下单击按钮上的选定项目
【发布时间】:2015-11-15 13:36:38
【问题描述】:

我正在尝试实现一件非常简单的事情。我在窗口上创建了一个选项卡控件(与 ObservableCollection 绑定)和一个按钮。当我单击一个按钮时,它会在此选项卡下创建一个带有小关闭按钮的新选项卡。当我按下这个关闭按钮时,一个按钮点击事件就会运行。

现在的问题是,当我按下关闭按钮时,它不会给出单击/选择的项目,因此我可以从 ObservableCollection 中删除关闭的选项卡。

以下是我的 Xaml 和按钮代码。

Xaml:

<TabControl x:Name="mytabcontrol" ItemsSource="{Binding TabItems}" Margin="10,66,36,10"> <!--SelectedItem="{Binding SelectedDetail, Mode=TwoWay}"-->
            <TabControl.ItemTemplate>
                <DataTemplate>
                    <!-- Tab item header: -->
                    <StackPanel Orientation="Horizontal">
                        <TextBlock x:Name="tabarea" Text="{Binding Content}" />
                        <Button Content="X" Click="Button_Click" />

                    </StackPanel>
                </DataTemplate>
            </TabControl.ItemTemplate>
            <TabControl.ContentTemplate>
                <DataTemplate>
                    <!-- Tab item content goes here. -->
                </DataTemplate>
            </TabControl.ContentTemplate>
        </TabControl>
        <Button Content="Click here" HorizontalAlignment="Left" Margin="10,27,0,0" VerticalAlignment="Top" Width="81" Click="Button_Click_1"/>

代码按钮。

 private void Button_Click(object sender, RoutedEventArgs e)
        {
            //Here i need the clicked or selected item when prssing close button
            TabItem ti = mytabcontrol.SelectedItem as TabItem; //Here i want to get the selected item when click on close button from tabcontrol, but it gives null.
            MessageBox.Show(ti.Header.ToString());//Iam getting null here
        }

请任何人在按下选项卡下的关闭按钮时帮助获取所选项目。在我附加的项目中,只需单击选项卡下的关闭按钮并查看单击按钮的行为,谢谢

Download Project

【问题讨论】:

    标签: wpf xaml


    【解决方案1】:

    我想TabItems 包含您的 Object 而不是 TabItem 的。所以mytabcontrol.SelectedItem 将是您的对象类型,您不能将它们转换为 TabItem。将它们转换为您的 Object 类型。

    【讨论】:

    • 很简单,将 mytabcontrol.SelectedItem 转换为 YourObject;让我们试试吧。
    • 谢谢您的回复。但是该值为空,所以我该如何转换它?如果您有任何示例代码,请分享
    • 你得到 null 因为 mytabcontrol.SelectedItem as TabItem;给你空。我没有要分享的代码,只有一行,您必须将 mytabcontrol.SelectedItem 更改为 mytabcontrol.SelectedItem 中的 TabItem,其中 YourObject 是您列表中的对象类型
    • 感谢您的回复,我是新手,正在努力学习 WPF,无论如何我已经通过使用这行代码实现了(var ab = ((Button)sender).DataContext as clsTabs)。 clsTabs 是我的课。我只需要了解这一行,它如何理解我点击了按钮,然后它会提取我想要获取的完全相同的项目。这是什么意思(DataContext as clsTabs)谢谢。
    猜你喜欢
    • 1970-01-01
    • 2015-06-15
    • 2020-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-12
    • 1970-01-01
    • 2020-09-11
    相关资源
    最近更新 更多