vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: XAML: Custom TabItem Template 
Autor: Drapondur
Datum: 22.05.09 05:09

Du könntest dynamische Resourcen verwenden und die Resourcen austauschen.
Bsp:
<Window x:Class="Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="509" Name="Window1">
	<Window.Resources>
		<ControlTemplate x:Key="DefaultTemplate" TargetType="TabItem">
			<Border BorderBrush="Black" BorderThickness="2">
			<DockPanel>
				<Button DockPanel.Dock="Right" Margin="3,0,0,0">Close tab</Button>
				<ContentPresenter VerticalAlignment="Center" ContentSource="Header" />
			</DockPanel>
			</Border>
		</ControlTemplate>
		<ControlTemplate x:Key="OtherTemplate" TargetType="TabItem">
			<Grid Background="AliceBlue">
				<Border BorderBrush="Black" BorderThickness="2">
					<ContentPresenter VerticalAlignment="Center"
ContentSource="Header" />
				</Border>
			</Grid>
		</ControlTemplate>
		<Style TargetType="TabItem">
			<Setter Property="Template" Value="{DynamicResource DefaultTemplate}">
			</Setter>
			<EventSetter Event="Button.Click" Handler="TabBtnClick"  />
		</Style>
		<Style TargetType="TabControl">
 
		</Style>
	</Window.Resources>
 
   <DockPanel>
	   <ToolBar Height="26" DockPanel.Dock="Top">
		   <Button Name="BtnToggleTemplate">Toggle template</Button>
	   </ToolBar>
		<TabControl>
			<TabItem Header="Item 1">
				<StackPanel>
					<Label>label 1</Label>
					<Button Width="113">test</Button>
				</StackPanel>
			</TabItem>
			<TabItem Header="Item 2">
				<Label>label 2</Label>
			</TabItem>
			<TabItem Header="Item 3">
				<Label>label 3</Label>
			</TabItem>
		</TabControl>
	</DockPanel>
</Window>
und
Class Window1 
 
	Private Const DefaultTemplateKey As String = "DefaultTemplate"
	Private Const OtherTemplateKey As String = "OtherTemplate"
 
	Private _defaultTemplate As Object
	Private _otherTemplate As Object
	Private _currentTemplate As Object
	Private _usedTemplateKey As String
 
	Private Sub Window1_Loaded(ByVal sender As System.Object, ByVal e As _
  System.Windows.RoutedEventArgs) Handles MyBase.Loaded
		'Templates sichern
		_defaultTemplate = Me.TryFindResource(DefaultTemplateKey)
		_otherTemplate = Me.TryFindResource(OtherTemplateKey)
 
		'Aktuell zugewiesenen ResourceKey ermitteln
		Dim itemStyle As Style = CType(Me.FindResource(GetType(TabItem)), Style)
		Dim setter As Setter = itemStyle.Setters.OfType(Of Setter).First(Function(x) _
  x.Property Is TabItem.TemplateProperty)
		Dim res As DynamicResourceExtension = CType(setter.Value, _
DynamicResourceExtension)
		'Den verwendeten Resource-Key merken
		_usedTemplateKey = res.ResourceKey.ToString
 
		'Das aktuelle verwendete Template merken
		_currentTemplate = Me.TryFindResource(_usedTemplateKey)
 
		'Wenn kein Template verwendet wurde, setzt ToggleTemplate das DefaultTemplate
		If _currentTemplate Is Nothing Then ToggleTemplate()
 
	End Sub
 
	Private Sub BtnToggleTemplate_Click(ByVal sender As System.Object, ByVal e As _
  System.Windows.RoutedEventArgs) Handles BtnToggleTemplate.Click
		ToggleTemplate()
	End Sub
 
	Private Sub ToggleTemplate()
		'Templates neu zuweisen
		If _currentTemplate Is _defaultTemplate Then
			_currentTemplate = _otherTemplate
		Else
			_currentTemplate = _defaultTemplate
		End If
		Me.Resources(_usedTemplateKey) = _currentTemplate
 
	End Sub
 
	Private Sub TabBtnClick(ByVal sender As Object, ByVal e As RoutedEventArgs)
		Dim btn As Button = TryCast(e.OriginalSource, Button)
		If btn Is Nothing Then Return
		Dim item As TabItem = TryCast(e.Source, TabItem)
		If item Is Nothing Then Return
		Dim ctrl As TabControl = TryCast(item.Parent, TabControl)
		If ctrl Is Nothing Then Return
		ctrl.Items.Remove(item)
	End Sub
 
End Class
Ciao
D.

Beitrag wurde zuletzt am 22.05.09 um 05:11:05 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
XAML: Custom TabItem Template2.473Maas20.05.09 19:44
Re: XAML: Custom TabItem Template1.866ModeratorRalf Ehlert20.05.09 21:23
Re: XAML: Custom TabItem Template2.034Maas20.05.09 21:40
Re: XAML: Custom TabItem Template1.804ModeratorRalf Ehlert20.05.09 22:11
Re: XAML: Custom TabItem Template1.727Maas21.05.09 13:17
Re: XAML: Custom TabItem Template2.097Drapondur22.05.09 05:09
Re: XAML: Custom TabItem Template1.769Maas22.05.09 10:38
Re: XAML: Custom TabItem Template1.779Maas24.05.09 13:02
Re: XAML: Custom TabItem Template1.714Maas24.05.09 14:00
Re: XAML: Custom TabItem Template1.869Maas25.05.09 14:10

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel