加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 选项卡控件默认选择第一个选项卡

发布时间:2020-12-15 07:51:39 所属栏目:百科 来源:网络整理
导读:我不确定这是否只是默认的 WPF选项卡控件行为或是否有一种方法可以禁用它. 我有一个tab控件定义如下: TabControl TabStripPlacement="Left" Background="Transparent" ItemsSource="{Binding Path=AvailableProducts}" SelectedValuePath="Name" SelectedVa
我不确定这是否只是默认的 WPF选项卡控件行为或是否有一种方法可以禁用它.

我有一个tab控件定义如下:

<TabControl TabStripPlacement="Left"
            Background="Transparent" 
            ItemsSource="{Binding Path=AvailableProducts}"
            SelectedValuePath="Name"
            SelectedValue="{Binding Path=SelectedProduct,Mode=TwoWay}">

AvailableProducts是产品列表.例如:

Foo
Bar
Baz

最初,SelectedProduct为null但是当显示选项卡控件时,它会自动选择Foo.我想要的是根本没有选择标签.

选项卡控件是否总是选择第一个选项卡?

UPDATE

我添加了一些示例代码,显示了我所描述的内容.

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <TabControl SelectedIndex="1">
            <TabItem Header="TAB 1">
                <Button>TEST</Button>
            </TabItem>
            <TabItem Header="TAB 2">
                <TabControl TabStripPlacement="Left"
                            Background="Transparent" 
                            ItemsSource="{Binding Path=AvailableProducts}"
                            SelectedValuePath="Name"
                            SelectedValue="{Binding Path=SelectedProduct,Mode=TwoWay}"/>
            </TabItem>
        </TabControl>
    </Grid>
</Window>




using System.Collections.Generic;

namespace WpfApplication1
{
    public partial class MainWindow
    {
        private List<Product> _availableProducts = new List<Product>();

        public MainWindow()
        {
            SelectedProduct = null;
            InitializeComponent();
            _availableProducts.Add(new Product("Foo"));
            _availableProducts.Add(new Product("Bar"));
            _availableProducts.Add(new Product("Baz"));

            DataContext = this;
        }

        public List<Product> AvailableProducts
        {
            get
            {
                return _availableProducts;
            }
        }

        public string SelectedProduct { get; set; }
    }

    public class Product
    {
        public Product(string name)
        {
            Name = name;
        }

        public string Name { get; set; }

        public override string ToString()
        {
            return Name;
        }
    }
}

如果您运行上面的代码,应用程序将以“TAB 2”显示,并且未选择任何选项卡Foo / Bar / Baz.但是,如果你改变了

<TabControl SelectedIndex="1">

<TabControl SelectedIndex="0">

并运行应用程序,它从“TAB 1”开始,当您切换到“TAB 2”时,选择第一个选项卡(Foo).

我不明白为什么如果你从“TAB 2”开始它按预期工作,但是如果你从“TAB 1”开始然后切换到“TAB 2”,默认选择一个标签.

解决方法

选项卡控件始终显示其中一个选项卡的内容,因此如果您没有明确告诉它哪个选项卡,它将使用第一个选项卡.你根本不能显示任何标签.

在选择产品之前,您可以尝试隐藏/禁用选项卡/选项卡控件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读