Панель инструментов изменить выбранный элемент - PullRequest
0 голосов
/ 24 февраля 2011

Я создал панель инструментов, которая имеет 3 элемента типа кнопки и имеет достаточную ширину, чтобы отобразить 1 элемент (остальное в раскрывающемся списке). Как я могу изменить поведение, когда при нажатии на элемент в раскрывающемся списке видимый элемент меняется на этот?

1 Ответ

1 голос
/ 24 февраля 2011

Вы можете изменить Toolbar.OverflowMode для выбранного элемента на OverflowMode.Never и Toolbar.OverflowMode других элементов в OverflowMode.Always

Пример:

<ToolBar Width="80" HorizontalAlignment="Left" VerticalAlignment="Top">
  <Button Name="btn1" ToolBar.OverflowMode="Never" Click="btn1_Click">Button 1</Button>
  <Button Name="btn2" ToolBar.OverflowMode="Always" Click="btn2_Click">Button 2</Button>
  <Button Name="btn3" ToolBar.OverflowMode="Always" Click="btn3_Click">Button 3</Button>
</ToolBar>


private void btn1_Click(object sender, RoutedEventArgs e)
{
  ToolBar.SetOverflowMode(btn1, OverflowMode.Never);
  ToolBar.SetOverflowMode(btn2, OverflowMode.Always);
  ToolBar.SetOverflowMode(btn3, OverflowMode.Always);
}

private void btn2_Click(object sender, RoutedEventArgs e)
{
  ToolBar.SetOverflowMode(btn1, OverflowMode.Always);
  ToolBar.SetOverflowMode(btn2, OverflowMode.Never);
  ToolBar.SetOverflowMode(btn3, OverflowMode.Always);
}

private void btn3_Click(object sender, RoutedEventArgs e)
{
  ToolBar.SetOverflowMode(btn3, OverflowMode.Never);
  ToolBar.SetOverflowMode(btn1, OverflowMode.Always);
  ToolBar.SetOverflowMode(btn2, OverflowMode.Always);
}

Более общий способ сделать это:

  UIElement element = sender as UIElement;
  if (element != null) 
  {
    ToolBar.SetOverflowMode(element, OverflowMode.Never);

    foreach (var child in toolbar.Items) 
    {
      if (child is UIElement && child != element) 
      {
        ToolBar.SetOverflowMode((UIElement)child, OverflowMode.Always);
      }
    }
  }
...