ControlTemplate Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Meghatározza a vezérlő több példánya között megosztható vizualizációs struktúrát és viselkedési szempontokat Control .
public ref class ControlTemplate : System::Windows::FrameworkTemplate
[System.Windows.Localizability(System.Windows.LocalizationCategory.None, Readability=System.Windows.Readability.Unreadable)]
[System.Windows.Markup.DictionaryKeyProperty("TargetType")]
public class ControlTemplate : System.Windows.FrameworkTemplate
[<System.Windows.Localizability(System.Windows.LocalizationCategory.None, Readability=System.Windows.Readability.Unreadable)>]
[<System.Windows.Markup.DictionaryKeyProperty("TargetType")>]
type ControlTemplate = class
inherit FrameworkTemplate
Public Class ControlTemplate
Inherits FrameworkTemplate
- Öröklődés
- Attribútumok
Példák
Az alábbiakban egy olyan érték ButtonStyle látható, amely beállítja a ControlTemplate következőt Button:
<Style TargetType="Button">
<!--Set to true to not get any properties from the themes.-->
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid>
<Ellipse Fill="{TemplateBinding Background}"/>
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Ha ezt alkalmazza, a Button következőként Ellipsejelenik meg:
Ha egy Template tulajdonságot újra Control állítjaControlTemplate, mint a fenti példában, a teljes sablont lecseréli. Button A fókuszban vagy a lenyomáskor megjelenő kép mind része a lecserélni kívánt gomb alapértelmezett megjelenésének. Ezért az igényeitől függően érdemes lehet meghatároznia, hogy milyen legyen a gomb a lenyomáskor, és így tovább, mint az alábbi példában:
<Style TargetType="Button">
<Setter Property="SnapsToDevicePixels"
Value="true" />
<Setter Property="OverridesDefaultStyle"
Value="true" />
<Setter Property="FocusVisualStyle"
Value="{StaticResource ButtonFocusVisual}" />
<Setter Property="MinHeight"
Value="23" />
<Setter Property="MinWidth"
Value="75" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border TextBlock.Foreground="{TemplateBinding Foreground}"
x:Name="Border"
CornerRadius="2"
BorderThickness="1">
<Border.BorderBrush>
<LinearGradientBrush StartPoint="0,0"
EndPoint="0,1">
<LinearGradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="{DynamicResource BorderLightColor}"
Offset="0.0" />
<GradientStop Color="{DynamicResource BorderDarkColor}"
Offset="1.0" />
</GradientStopCollection>
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
</Border.BorderBrush>
<Border.Background>
<LinearGradientBrush EndPoint="0.5,1"
StartPoint="0.5,0">
<GradientStop Color="{DynamicResource ControlLightColor}"
Offset="0" />
<GradientStop Color="{DynamicResource ControlMediumColor}"
Offset="1" />
</LinearGradientBrush>
</Border.Background>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0:0:0.5" />
<VisualTransition GeneratedDuration="0"
To="Pressed" />
</VisualStateGroup.Transitions>
<VisualState x:Name="Normal" />
<VisualState x:Name="MouseOver">
<Storyboard>
<ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).
(GradientBrush.GradientStops)[1].(GradientStop.Color)"
Storyboard.TargetName="Border">
<EasingColorKeyFrame KeyTime="0"
Value="{StaticResource ControlMouseOverColor}" />
</ColorAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Pressed">
<Storyboard>
<ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).
(GradientBrush.GradientStops)[1].(GradientStop.Color)"
Storyboard.TargetName="Border">
<EasingColorKeyFrame KeyTime="0"
Value="{StaticResource ControlPressedColor}" />
</ColorAnimationUsingKeyFrames>
<ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush).
(GradientBrush.GradientStops)[0].(GradientStop.Color)"
Storyboard.TargetName="Border">
<EasingColorKeyFrame KeyTime="0"
Value="{StaticResource PressedBorderDarkColor}" />
</ColorAnimationUsingKeyFrames>
<ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush).
(GradientBrush.GradientStops)[1].(GradientStop.Color)"
Storyboard.TargetName="Border">
<EasingColorKeyFrame KeyTime="0"
Value="{StaticResource PressedBorderLightColor}" />
</ColorAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Disabled">
<Storyboard>
<ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).
(GradientBrush.GradientStops)[1].(GradientStop.Color)"
Storyboard.TargetName="Border">
<EasingColorKeyFrame KeyTime="0"
Value="{StaticResource DisabledControlDarkColor}" />
</ColorAnimationUsingKeyFrames>
<ColorAnimationUsingKeyFrames
Storyboard.TargetProperty="(TextBlock.Foreground).(SolidColorBrush.Color)"
Storyboard.TargetName="Border">
<EasingColorKeyFrame KeyTime="0"
Value="{StaticResource DisabledForegroundColor}" />
</ColorAnimationUsingKeyFrames>
<ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush).
(GradientBrush.GradientStops)[1].(GradientStop.Color)"
Storyboard.TargetName="Border">
<EasingColorKeyFrame KeyTime="0"
Value="{StaticResource DisabledBorderDarkColor}" />
</ColorAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<ContentPresenter Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
RecognizesAccessKey="True" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsDefault"
Value="true">
<Setter TargetName="Border"
Property="BorderBrush">
<Setter.Value>
<LinearGradientBrush StartPoint="0,0"
EndPoint="0,1">
<GradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="{DynamicResource DefaultBorderBrushLightBrush}"
Offset="0.0" />
<GradientStop Color="{DynamicResource DefaultBorderBrushDarkColor}"
Offset="1.0" />
</GradientStopCollection>
</GradientBrush.GradientStops>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Vegye figyelembe, hogy ez a példa az itt nem látható erőforrásokra hivatkozik. A teljes minta: Styling with ControlTemplates Sample. Ez a minta számos vezérlőhöz kínál példákat a vezérlősablonokra, és ez a legjobb módszer a vezérlősablonok létrehozásának megkezdéséhez.
Megjegyzések
Ez ControlTemplate lehetővé teszi egy vezérlő vizuális szerkezetének megadását. A vezérlő szerzője meghatározhatja az alapértelmezett értéket ControlTemplate , és az alkalmazás szerzője felülbírálhatja a ControlTemplate vezérlő vizuális szerkezetének rekonstruálásához.
A vezérlési templating az WPF stílus- és templatálási modell által kínált számos funkció egyike. A stílus- és csábító modell olyan nagy rugalmasságot biztosít, hogy sok esetben nem kell saját vezérlőket írnia. Ha Ön olyan alkalmazáskészítő, aki módosítani szeretné a vezérlő vizualizációját, vagy egy meglévő vezérlőt szeretne lecserélni ControlTemplate , tekintse meg a Stílus és a Templating témakört példákkal és részletes vitafórumokkal.
Ha saját vezérlőt ír, tekintse meg az "Egyéni vezérlő létrehozása" című témakört a Vezérlőelem-létrehozási áttekintésben.
Az A ControlTemplate a megvalósítás részleteinek önálló egysége, amely nem látható a külső felhasználók és objektumok számára, beleértve a stílusokat is. A vezérlősablon tartalmának módosításának egyetlen módja ugyanaz a vezérlősablon.
XAML tulajdonságelem-használat
<ControlTemplate>
<VisualTreeRootNode>
VisualTreeNodeContents
</VisualTreeRootNode>
</ControlTemplate>
XAML-értékek
ControlTemplate Objektumelem vagy ControlTemplate származtatott osztály.
VisualTreeRootNode Egyetlen XAML-elem a (vagy származtatott osztály) közvetlen gyermekeként ControlTemplate . A sablonoknak egyetlen gyökércsomópontot kell tartalmazniuk. Egy hasznos sablon létrehozásához a VisualTreeRootNode-ként kiválasztott elem várhatóan támogatja a saját tartalommodelljét, gyakran egy több gyermekelemet támogató modellt.
VisualTreeNodeContents Egy vagy több elem, amely befejezi a kívánt sablont. Ha a VisualTreeRootNode elemként kiválasztott elem csak egyetlen gyermeket támogat, akkor csak egy elem deklarálható VisualTreeNodeContentsként. Ha a kiválasztott VisualTreeRootNode támogatja a szöveges tartalom tulajdonságot, (bár nem gyakori) szöveges tartalmat is megadhat.
Konstruktorok
| Name | Description |
|---|---|
| ControlTemplate() |
Inicializálja a ControlTemplate osztály új példányát. |
| ControlTemplate(Type) |
Inicializálja az osztály új példányát ControlTemplate a megadott céltípussal. |
Tulajdonságok
| Name | Description |
|---|---|
| Dispatcher |
Lekérdezi, Dispatcher hogy ez a társítva van-e DispatcherObject . (Öröklődés forrása DispatcherObject) |
| HasContent |
Olyan értéket kap, amely jelzi, hogy a sablon rendelkezik-e optimalizált tartalommal. (Öröklődés forrása FrameworkTemplate) |
| IsSealed |
Olyan értéket kap, amely jelzi, hogy az objektum nem módosítható állapotban van-e, ezért nem módosítható. (Öröklődés forrása FrameworkTemplate) |
| Resources |
Lekéri vagy beállítja a sablon hatókörén belül használható erőforrások gyűjteményét. (Öröklődés forrása FrameworkTemplate) |
| TargetType |
Lekéri vagy beállítja azt a típust, amelyhez ez ControlTemplate a cél. |
| Template |
Lekéri vagy beállít egy hivatkozást arra az objektumra, amely rögzíti vagy lejátssza a sablon XAML-csomópontjait, amikor a sablont egy író definiálja vagy alkalmazza. (Öröklődés forrása FrameworkTemplate) |
| Triggers |
Olyan objektumgyűjteményt TriggerBase kér le, amely tulajdonságmódosításokat alkalmaz, vagy meghatározott feltételek alapján hajt végre műveleteket. |
| VisualTree |
Lekéri vagy beállítja a sablon gyökércsomópontját. (Öröklődés forrása FrameworkTemplate) |
Metódusok
| Name | Description |
|---|---|
| CheckAccess() |
Meghatározza, hogy a hívó szál hozzáfér-e ehhez DispatcherObject. (Öröklődés forrása DispatcherObject) |
| Equals(Object) |
Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal. (Öröklődés forrása Object) |
| FindName(String, FrameworkElement) |
Megkeresi a sablonban definiált megadott névhez társított elemet. (Öröklődés forrása FrameworkTemplate) |
| GetHashCode() |
Ez az alapértelmezett kivonatoló függvény. (Öröklődés forrása Object) |
| GetType() |
Lekéri az Type aktuális példányt. (Öröklődés forrása Object) |
| LoadContent() |
Betölti a sablon tartalmát egy objektum példányaként, és visszaadja a tartalom gyökérelemét. (Öröklődés forrása FrameworkTemplate) |
| MemberwiseClone() |
Az aktuális Objectpéldány sekély másolatát hozza létre. (Öröklődés forrása Object) |
| RegisterName(String, Object) |
Új név/objektumpárt regisztrál az aktuális névtartományba. (Öröklődés forrása FrameworkTemplate) |
| Seal() |
Zárolja a sablont, hogy ne lehessen módosítani. (Öröklődés forrása FrameworkTemplate) |
| ShouldSerializeResources(XamlDesignerSerializationManager) |
Olyan értéket ad vissza, amely jelzi, hogy a szerializálási folyamatok szerializálják-e a tulajdonság értékét az Resources osztály példányaiban. (Öröklődés forrása FrameworkTemplate) |
| ShouldSerializeVisualTree() |
Olyan értéket ad vissza, amely jelzi, hogy a szerializálási folyamatok szerializálják-e a tulajdonság értékét az VisualTree osztály példányaiban. (Öröklődés forrása FrameworkTemplate) |
| ToString() |
Az aktuális objektumot jelképező sztringet ad vissza. (Öröklődés forrása Object) |
| UnregisterName(String) |
Eltávolít egy név-/objektumleképezést az XAML névtávcsőből. (Öröklődés forrása FrameworkTemplate) |
| ValidateTemplatedParent(FrameworkElement) |
Ellenőrzi a sablonos szülőt egy szabálykészleten. |
| VerifyAccess() |
Kényszeríti, hogy a hívószál hozzáférhessen ehhez.DispatcherObject (Öröklődés forrása DispatcherObject) |
Explicit interfész-implementációk
| Name | Description |
|---|---|
| INameScope.FindName(String) |
A megadott azonosító névvel rendelkező objektumot ad vissza. (Öröklődés forrása FrameworkTemplate) |
| IQueryAmbient.IsAmbientPropertyAvailable(String) |
Lekérdezi, hogy egy adott környezeti tulajdonság elérhető-e az aktuális hatókörben. (Öröklődés forrása FrameworkTemplate) |