Управление вкладками, как браузер Chrome в приложении Silverlight - PullRequest
0 голосов
/ 10 июня 2011

Я видел это раньше.Нам нужен выделенный элемент tab с символом «+».Как браузер Chrome в Silver Light Application .

Всегда есть элемент вкладки, видимый в конце наполовину видимым, и как только вы нажимаете на него, он превращается в полный элемент вкладки.

1 Ответ

1 голос
/ 10 июня 2011

Это было немного, хотя ответить: P

Вот так:

Создайте класс с именем LinqToVisualTree.Вы можете найти его в конце этого поста вместе с объяснением того, что он делает.По сути, он позволяет вам запрашивать ваше визуальное дерево через LINQ.

Чтобы добавить что-либо в строку вкладок в TabControl, вам нужно манипулировать TabPanel, которая содержит «кнопки» вкладок.TabPanel находится в пространстве имен System.Windows.Controls.Primitives, поэтому обратитесь к нему.

Самый простой способ получить найденную мной TabPanel - назвать хотя бы один из ваших элементов TabItems и сделать это:

using System.Windows.Controls.Primitives;       // Contains TabPanel
using LinqToVisualTree;

void AddPlusButton() {
    // Creates a button beside the tabs
    var button = new Button()
    {
        Content = "+",
        IsTabStop = false      // To prevent keyboard press
    };

    // Links the Click with the "new tab" function
    button.Click += new RoutedEventHandler(btPlus_Click);

    // *** HERE IS THE TRICK ***
    // Gets the parent TabPanel in the Visual Tree and cast it
    var tabpn = tabItem1.Ancestors<TabPanel>().FirstOrDefault() as TabPanel;

    // Links the button created
    tabpn.Children.Add(button);
}

Вот метод для кнопки плюс:

void btPlus_Click(object sender, RoutedEventArgs e)
{
    // Creates a new TabItem
    var ti = new TabItem();
    ti.Header = "TabAdded";
    ti.Content = new TextBlock() { Text = "Tab content!" };

    // Links it
    tabControl.Items.Add(ti);
}

Вот и все!Совет: я только что узнал о классе TabPanel, используя Silverlight Spy .Ища в Google, я мог бы просто найти способы сделать это, изменив Стиль шаблона с помощью TabControl.

С уважением!

...