Capito come nascondere i puntini sul lato sinistro, ora come posso nascondere la freccia del menu a discesa Aggiungi/Rimuovi sul lato destro?Come nascondere la freccia sul lato destro di una barra degli strumenti?
risposta
Google è pieno con la risposta a questo:
private void ToolBar_Loaded(object sender, RoutedEventArgs e)
{
ToolBar toolBar = sender as ToolBar;
var overflowGrid = toolBar.Template.FindName("OverflowGrid", toolBar) as FrameworkElement;
if (overflowGrid != null)
{
overflowGrid.Visibility = Visibility.Collapsed;
}
var mainPanelBorder = toolBar.Template.FindName("MainPanelBorder", toolBar) as FrameworkElement;
if (mainPanelBorder != null)
{
mainPanelBorder.Margin = new Thickness(0);
}
}
e assegnare questo metodo per la toolbar evento Loaded.
Modifica:Anche chiuso.
Edit2:Risolto il problema delle risorse mancanti.
In alternativa è possibile utilizzare una copia dello stile con la precedente visibilità menzionata cambiato e il margine a destra rimosso, tutte quelle risorse appartengono allo stile/modello:
<LinearGradientBrush x:Key="ToolBarHorizontalBackground" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFFFFF" Offset="0"/>
<GradientStop Color="#FFFBFF" Offset="0.5"/>
<GradientStop Color="#F7F7F7" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="ToolBarToggleButtonVerticalBackground" EndPoint="1,0" StartPoint="0,0">
<GradientStop Color="#ECECEC" Offset="0"/>
<GradientStop Color="#DDDDDD" Offset="0.5"/>
<GradientStop Color="#A0A0A0" Offset="1"/>
</LinearGradientBrush>
<SolidColorBrush x:Key="ToolBarButtonHover" Color="#C2E0FF"/>
<SolidColorBrush x:Key="ToolBarGripper" Color="#C6C3C6"/>
<Style x:Key="ToolBarVerticalOverflowButtonStyle" TargetType="{x:Type ToggleButton}">
<Setter Property="Background" Value="{StaticResource ToolBarToggleButtonVerticalBackground}"/>
<Setter Property="MinHeight" Value="0"/>
<Setter Property="MinWidth" Value="0"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Border x:Name="Bd" Background="{TemplateBinding Background}" CornerRadius="0,0,3,3" SnapsToDevicePixels="true">
<Canvas HorizontalAlignment="Right" Height="6" Margin="2,7,2,2" SnapsToDevicePixels="true" VerticalAlignment="Bottom" Width="7">
<Path Data="M 1.5 1 L 1.5 6" Stroke="White"/>
<Path Data="M 0.5 0 L 0.5 5" Stroke="{TemplateBinding Foreground}"/>
<Path Data="M 3.5 0.5 L 7 3.5 L 4 6.5 Z" Fill="White"/>
<Path Data="M 3 -0.5 L 6 2.5 L 3 5.5 Z" Fill="{TemplateBinding Foreground}"/>
</Canvas>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Background" TargetName="Bd" Value="{StaticResource ToolBarButtonHover}"/>
</Trigger>
<Trigger Property="IsKeyboardFocused" Value="true">
<Setter Property="Background" TargetName="Bd" Value="{StaticResource ToolBarButtonHover}"/>
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Foreground" Value="{StaticResource ToolBarGripper}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding Source={x:Static SystemParameters.HighContrast}}" Value="true">
<Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
</DataTrigger>
</Style.Triggers>
</Style>
<LinearGradientBrush x:Key="ToolBarVerticalBackground" EndPoint="1,0" StartPoint="0,0">
<GradientStop Color="#FFFFFF" Offset="0"/>
<GradientStop Color="#FFFBFF" Offset="0.5"/>
<GradientStop Color="#F7F7F7" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="ToolBarToggleButtonHorizontalBackground" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#ECECEC" Offset="0"/>
<GradientStop Color="#DDDDDD" Offset="0.5"/>
<GradientStop Color="#A0A0A0" Offset="1"/>
</LinearGradientBrush>
<Style x:Key="ToolBarHorizontalOverflowButtonStyle" TargetType="{x:Type ToggleButton}">
<Setter Property="Background" Value="{StaticResource ToolBarToggleButtonHorizontalBackground}"/>
<Setter Property="MinHeight" Value="0"/>
<Setter Property="MinWidth" Value="0"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Border x:Name="Bd" Background="{TemplateBinding Background}" CornerRadius="0,3,3,0" SnapsToDevicePixels="true">
<Canvas HorizontalAlignment="Right" Height="7" Margin="7,2,2,2" SnapsToDevicePixels="true" VerticalAlignment="Bottom" Width="6">
<Path Data="M 1 1.5 L 6 1.5" Stroke="White"/>
<Path Data="M 0 0.5 L 5 0.5" Stroke="{TemplateBinding Foreground}"/>
<Path Data="M 0.5 4 L 6.5 4 L 3.5 7 Z" Fill="White"/>
<Path Data="M -0.5 3 L 5.5 3 L 2.5 6 Z" Fill="{TemplateBinding Foreground}"/>
</Canvas>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Background" TargetName="Bd" Value="{StaticResource ToolBarButtonHover}"/>
</Trigger>
<Trigger Property="IsKeyboardFocused" Value="true">
<Setter Property="Background" TargetName="Bd" Value="{StaticResource ToolBarButtonHover}"/>
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Foreground" Value="{StaticResource ToolBarGripper}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding Source={x:Static SystemParameters.HighContrast}}" Value="true">
<Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
</DataTrigger>
</Style.Triggers>
</Style>
<SolidColorBrush x:Key="ToolBarMenuBorder" Color="#808080"/>
<SolidColorBrush x:Key="ToolBarSubMenuBackground" Color="#FDFDFD"/>
<Style x:Key="ToolBarThumbStyle" TargetType="{x:Type Thumb}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Thumb}">
<Border Background="Transparent" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="True">
<Rectangle>
<Rectangle.Fill>
<DrawingBrush TileMode="Tile" Viewbox="0,0,4,4" Viewport="0,0,4,4" ViewportUnits="Absolute" ViewboxUnits="Absolute">
<DrawingBrush.Drawing>
<DrawingGroup>
<GeometryDrawing Brush="White" Geometry="M 1 1 L 1 3 L 3 3 L 3 1 z"/>
<GeometryDrawing Brush="{StaticResource ToolBarGripper}" Geometry="M 0 0 L 0 2 L 2 2 L 2 0 z"/>
</DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush>
</Rectangle.Fill>
</Rectangle>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Cursor" Value="SizeAll"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="ToolBarMainPanelBorderStyle" TargetType="{x:Type Border}">
<Setter Property="Margin" Value="0,0,11,0"/>
<Setter Property="CornerRadius" Value="3,3,3,3"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Source={x:Static SystemParameters.HighContrast}}" Value="true">
<Setter Property="CornerRadius" Value="0,0,0,0"/>
</DataTrigger>
</Style.Triggers>
</Style>
<Style x:Key="ToolBarWithoutOverflowBarStyle" TargetType="{x:Type ToolBar}">
<Setter Property="Background" Value="{StaticResource ToolBarHorizontalBackground}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToolBar}">
<Grid x:Name="Grid" Margin="3,1,1,1" SnapsToDevicePixels="true">
<Grid x:Name="OverflowGrid" HorizontalAlignment="Right" Visibility="Hidden">
<ToggleButton x:Name="OverflowButton" ClickMode="Press" FocusVisualStyle="{x:Null}" IsChecked="{Binding IsOverflowOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" IsEnabled="{TemplateBinding HasOverflowItems}" Style="{StaticResource ToolBarHorizontalOverflowButtonStyle}"/>
<Popup x:Name="OverflowPopup" AllowsTransparency="true" Focusable="false" IsOpen="{Binding IsOverflowOpen, RelativeSource={RelativeSource TemplatedParent}}" PopupAnimation="{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom" StaysOpen="false">
<Microsoft_Windows_Themes:SystemDropShadowChrome x:Name="Shdw" Color="Transparent">
<Border x:Name="ToolBarSubMenuBorder" BorderBrush="{StaticResource ToolBarMenuBorder}" BorderThickness="1" Background="{StaticResource ToolBarSubMenuBackground}" RenderOptions.ClearTypeHint="Enabled">
<ToolBarOverflowPanel x:Name="PART_ToolBarOverflowPanel" KeyboardNavigation.DirectionalNavigation="Cycle" FocusVisualStyle="{x:Null}" Focusable="true" Margin="2" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" KeyboardNavigation.TabNavigation="Cycle" WrapWidth="200"/>
</Border>
</Microsoft_Windows_Themes:SystemDropShadowChrome>
</Popup>
</Grid>
<Border x:Name="MainPanelBorder" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" Style="{StaticResource ToolBarMainPanelBorderStyle}" Margin="0">
<DockPanel KeyboardNavigation.TabIndex="1" KeyboardNavigation.TabNavigation="Local">
<Thumb x:Name="ToolBarThumb" Margin="-3,-1,0,0" Padding="6,5,1,6" Style="{StaticResource ToolBarThumbStyle}" Width="10"/>
<ContentPresenter x:Name="ToolBarHeader" ContentSource="Header" HorizontalAlignment="Center" Margin="4,0,4,0" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="Center"/>
<ToolBarPanel x:Name="PART_ToolBarPanel" IsItemsHost="true" Margin="0,1,2,2" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</DockPanel>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsOverflowOpen" Value="true">
<Setter Property="IsEnabled" TargetName="ToolBarThumb" Value="false"/>
</Trigger>
<Trigger Property="Header" Value="{x:Null}">
<Setter Property="Visibility" TargetName="ToolBarHeader" Value="Collapsed"/>
</Trigger>
<Trigger Property="ToolBarTray.IsLocked" Value="true">
<Setter Property="Visibility" TargetName="ToolBarThumb" Value="Collapsed"/>
</Trigger>
<Trigger Property="HasDropShadow" SourceName="OverflowPopup" Value="true">
<Setter Property="Margin" TargetName="Shdw" Value="0,0,5,5"/>
<Setter Property="SnapsToDevicePixels" TargetName="Shdw" Value="true"/>
<Setter Property="Color" TargetName="Shdw" Value="#71000000"/>
</Trigger>
<Trigger Property="Orientation" Value="Vertical">
<Setter Property="Margin" TargetName="Grid" Value="1,3,1,1"/>
<Setter Property="Style" TargetName="OverflowButton" Value="{StaticResource ToolBarVerticalOverflowButtonStyle}"/>
<Setter Property="Height" TargetName="ToolBarThumb" Value="10"/>
<Setter Property="Width" TargetName="ToolBarThumb" Value="Auto"/>
<Setter Property="Margin" TargetName="ToolBarThumb" Value="-1,-3,0,0"/>
<Setter Property="Padding" TargetName="ToolBarThumb" Value="5,6,6,1"/>
<Setter Property="Margin" TargetName="ToolBarHeader" Value="0,0,0,4"/>
<Setter Property="Margin" TargetName="PART_ToolBarPanel" Value="1,0,2,2"/>
<Setter Property="DockPanel.Dock" TargetName="ToolBarThumb" Value="Top"/>
<Setter Property="DockPanel.Dock" TargetName="ToolBarHeader" Value="Top"/>
<Setter Property="HorizontalAlignment" TargetName="OverflowGrid" Value="Stretch"/>
<Setter Property="VerticalAlignment" TargetName="OverflowGrid" Value="Bottom"/>
<Setter Property="Placement" TargetName="OverflowPopup" Value="Right"/>
<Setter Property="Margin" TargetName="MainPanelBorder" Value="0,0,0,11"/>
<Setter Property="Background" Value="{StaticResource ToolBarVerticalBackground}"/>
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding Source={x:Static SystemParameters.HighContrast}}" Value="true">
<Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
</DataTrigger>
</Style.Triggers>
</Style>
Dopo aver incorporato che da qualche parte si può imposta lo stile della barra degli strumenti:
<ToolBar Style="{DynamicResource ToolBarWithoutOverflowBarStyle}"/>
Wow ... Non posso credere che sia necessario molto lavoro per avere una semplice barra degli strumenti. – mpen
Se non si desidera il grip e il menu a discesa, perché si utilizza una barra degli strumenti? Potresti semplicemente usare un pannello di qualche tipo. –
@ Ralph: Non è molto lavoro se si dispone di Expression Blend, è possibile estrarre il modello predefinito, è quello che ho fatto qui. La miscela è abbastanza utile per modelli, stili e simili. –
Assegnare il seguente metodo alla barra degli strumenti evento SizeChanged.
private void ToolBar_SizeChanged(object sender, SizeChangedEventArgs e)
{
ToolBar toolBar = sender as ToolBar;
var overflowGrid = toolBar.Template.FindName("OverflowGrid", toolBar) as FrameworkElement;
if (overflowGrid != null)
{
overflowGrid.Visibility = toolBar.HasOverflowItems ? Visibility.Visible : Visibility.Collapsed;
}
var mainPanelBorder = toolBar.Template.FindName("MainPanelBorder", toolBar) as FrameworkElement;
if (mainPanelBorder != null)
{
var defaultMargin = new Thickness(0, 0, 11, 0);
mainPanelBorder.Margin = toolBar.HasOverflowItems ?defaultMargin: new Thickness(0);
}
}
funziona perfettamente con barre degli strumenti orizzontali. per le barre degli strumenti verticali la freccia non si trova sotto l'ultimo pulsante, ma accanto ad essa (a destra, se la barra degli strumenti si trova sul lato sinistro della finestra). –
in caso di orientamento. Verticale il margine deve essere Spessore (0, 0, 0, 11) –
Ho cercato quattro ore per farlo correttamente con MVVM (quindi senza codice dietro).
La cosa più importante è la "visibilità compressa" dopo ToggleButton e dopo ToolBarOverflowPanel
(ho impostato il colore di sfondo su nero per il mio esempio nav).
Ecco il codice che può essere inserita sulla barra degli strumenti per "<toolbar Style="{StaticResource ToolBar}" Background="Black">...</ToolBar>
Ecco il codice per lo stile:
<Style x:Key="Toolbar" TargetType="{x:Type ToolBar}">
<Setter Property="SnapsToDevicePixels" Value="true"/>
<Setter Property="OverridesDefaultStyle" Value="true"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToolBar}">
<Border x:Name="Border" CornerRadius="2" BorderThickness="1" Background="Black" BorderBrush="Black">
<DockPanel >
<ToggleButton Visibility="Collapsed" DockPanel.Dock="Right" IsEnabled="False" IsChecked="False" ClickMode="Press">
<Popup x:Name="OverflowPopup" AllowsTransparency="true" Placement="Bottom" IsOpen="{Binding Path=IsOverflowOpen,RelativeSource={RelativeSource TemplatedParent}}" StaysOpen="false" Focusable="false" PopupAnimation="Slide">
<Border x:Name="DropDownBorder" Background="pink" BorderThickness="1" BorderBrush="pink">
<ToolBarOverflowPanel x:Name="PART_ToolBarOverflowPanel" Margin="2" WrapWidth="200" Focusable="true" FocusVisualStyle="{x:Null}" KeyboardNavigation.TabNavigation="Cycle" KeyboardNavigation.DirectionalNavigation="Cycle" Visibility="Collapsed"/>
</Border>
</Popup>
</ToggleButton>
<ToolBarPanel x:Name="PART_ToolBarPanel" IsItemsHost="true" Margin="0,1,2,2"/>
</DockPanel>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Non sono molto sicuro che in realtà serve una barra degli strumenti o un tipo di componente simile a una barra dei menu. Ecco cosa voglio:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Menu Grid.Row="0">
<MenuItem Header="Menu1" Padding="10 4">
<MenuItem Header="MenuItem1"/>
<MenuItem Header="MenuItem2"/>
</MenuItem>
<MenuItem Header="Menu2" Padding="10 4">
<MenuItem Header="MenuItem1"/>
<MenuItem Header="MenuItem2"/>
</MenuItem>
</Menu>
<...>
</Grid>
Potrebbe non adattarsi al tuo caso. Vorrei solo condividere il mio.
- 1. Come posizionare UIBarButtonItem sul lato destro di una UIToolbar?
- 2. Come aggiungere un pulsante sul lato destro della barra degli strumenti?
- 3. iPhone: nascondere/mostrare la barra degli strumenti
- 4. Come nascondere la barra degli strumenti in Eclipse 4.2?
- 5. imposta l'icona dell'app sul lato destro nella barra degli strumenti delle attività
- 6. Come nascondere il menu/la barra degli strumenti di gvim?
- 7. Impedisci alle foto di nascondere mai la barra degli strumenti
- 8. Menu sul lato destro?
- 9. AppCompat v7 Barra degli strumenti Freccia su/indietro non funziona
- 10. Barra degli strumenti si sovrappone sotto la barra di stato
- 11. Come posizionare una barra di scorrimento div sul lato sinistro?
- 12. iOS 5: pulsante di posizionamento barra elemento in una barra degli strumenti con Xcode/Storyboard
- 13. Redactor - La barra degli strumenti fissa non funziona sul cellulare
- 14. Nascondere barre degli strumenti, barra dei menu, barra di scorrimento, ecc.
- 15. Barra laterale angolare e barra degli strumenti fissa
- 16. Come modificare la modifica del testo e il colore della freccia sulla barra degli strumenti?
- 17. CKEditor 4 Inline: come nascondere la barra degli strumenti su richiesta?
- 18. Come nascondere javascript window.open barra degli indirizzi/barra degli indirizzi?
- 19. Stile barra degli strumenti di Android Spinner
- 20. Come posso nascondere la barra degli strumenti di un UINavigationController usando gli storyboard?
- 21. Come posso posizionare la navigazione della mia barra delle azioni sul lato destro?
- 22. Come aggiungere correttamente una vista personalizzata alla barra degli strumenti?
- 23. Ottenere la barra degli strumenti in frammento
- 24. Come aggiungere una singola voce di menu alla barra degli strumenti in Android?
- 25. Eclipse + Git - Come ottenere la barra degli strumenti?
- 26. Barra degli strumenti che scorre sotto la barra di stato
- 27. Crea una barra degli strumenti con un layout di griglia
- 28. Android RecyclerVista sotto la barra degli strumenti
- 29. Utilizzando una griglia Kendo, come si modifica la dicitura sul pulsante "Crea" nella barra degli strumenti?
- 30. Come personalizzare una barra degli strumenti in Eclipse?
Provato a cercare su google, non è riuscito a trovarlo. E questo lascia una fessura sul lato destro in cui il pulsante era una volta ... comunque per sistemarlo? – mpen
Per il divario 'OverflowMode =" Never "' dovrebbe rimuoverlo se ricordo bene. –
@Andrei: Di cosa si tratta? Dove lo metto? ** Modifica: ** Nevermind. Trovato. Ma non rimuove il divario. – mpen