Laden...

Geerbtes Steuerelement mit neuen Funktion / Elementen

Erstellt von ThrYleR vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.405 Views
T
ThrYleR Themenstarter:in
26 Beiträge seit 2009
vor 14 Jahren
Geerbtes Steuerelement mit neuen Funktion / Elementen

Hej Leute,
Sorry schon mal für den Titel, weiß nicht ob der 100% verständlich ist 😛.

Also folgendes:
Ich will, ähnlich wie in WebBrowsern, mehrer "Seiten" mit dem sogenannten "TabControl" verwalten.
Das funktioniert auch soweit ohne Probleme, aber das "x" um den Tab zu schließen bekomme ich einfach nicht auf die Beine!
Ich weiß nicht warum!, wenn ich dem Button das Event "Click" hinzufüge, macht er mir schon vorschläge welche Funktion in der Class ich verwenden will. Wenn ich dann das Programm Compilieren will sagt er mir immer:
enthält keine Definition für... keine Erweiterungsmethode (Fehlt eine Using-Direktive oder ein Assemblyverweis?)
Nein! , oder?

Wichtiger QuellCode:
Mein SteuerElement_Code


namespace AiP_Oberflaeche
{
    public class MyTabItem : TabItem
    {
        public MyTabItem()
        {           
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
        }
    }
}


Mein SteuerElement_xaml



<ResourceDictionary
	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
	xmlns:local="clr-namespace:AiP_Oberflaeche"
        x:Class="MyTabItem"
    >
  
    <Style TargetType="{x:Type local:MyTabItem}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type local:MyTabItem}">                 
                            <ContentPresenter .../>
                      
                        <Button Click="Button_Click" " />
............

Ich habe keine Ahnung woran das liegen könnte, oder is mein kompletter Ansatz falsch?
Danke schonmal für die Hilfe!
Mfg ThrYleR

J
641 Beiträge seit 2007
vor 14 Jahren
partial??

muss es nicht


 public partial class MyTabItem : TabItem

heissen??

cSharp Projekte : https://github.com/jogibear9988

T
ThrYleR Themenstarter:in
26 Beiträge seit 2009
vor 14 Jahren

Ja eig. schon, aber es zeigt keine Auswirkungen

Hat keiner eine Idee?!
Es muss doch möglich sein ein eigenes Control zu schreiben?
Mein Blend3 ist jetzt mit der Weile soweit das wenn ich es compilieren stürzt das Programm komplett ab, VS08 tut dies nicht.

*Push*

Mfg
ThrYleR

W
113 Beiträge seit 2006
vor 14 Jahren

Hallo ThrYleR,

Ein Weg wäre folgender:

MyTabItem.xaml:


<TabItem x:Class="Test_011.MyTabItem"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Height="300" Width="300">
    <Grid>
        <Button Click="Button_Click"  />
    </Grid>
</TabItem>

MyTabItem.xaml.cs:


using System.Windows.Controls;
using System.Windows;

namespace Test_011
{
    /// <summary>
    /// Interaktionslogik für MyTabItem.xaml
    /// </summary>
    public partial class MyTabItem : TabItem
    {
        public MyTabItem()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            //-- TODO...
        }
    }
}

mfg XaN

T
ThrYleR Themenstarter:in
26 Beiträge seit 2009
vor 14 Jahren

Hej, cool danke. Klappt soweit echt spitze, jetzt ist leider aber das nächste Problem aufgetreten.
Natürlich will ich auch Triggers hinzufügen, aber das geht nun, aus mir nicht logischen Gründen nicht.
FehlerMeldung:
"Sobald ein TriggerCollection-Objekt verwendet wird (versiegelt ist), kann es nicht mehr geändert werden"
Was die bedeutet ist klar, warum, aber nicht!^^

Bitte um Hilfe, Dankeschonmal!

Meine CustomControl:


<TabItem
    x:Class="TestAppi.Data.MyTabItem"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:r="clr-namespace:TestAppi.Data"
    Height="66" Width="200"
    >
    <TabItem.Template>
        <ControlTemplate>
            <Grid Width="177" Height="30" x:Name="tabItemGrid1"> 
                <Border Margin="0" x:Name="Border" Background="#ffffff" BorderBrush="#556688" BorderThickness="0,0.5,2,0" CornerRadius="0,10,0,0">
                    <ContentPresenter   HorizontalAlignment="Center" Margin="12,2,12,2"  VerticalAlignment="Center" ></ContentPresenter>
                </Border>
                <Button  Click="Button_Click" HorizontalAlignment="Right" Margin="0,8,15.833,5.73" VerticalAlignment="Stretch" Width="15.333" Height="Auto" Content="-" ></Button>                                
            </Grid>
            <ControlTemplate.Triggers>
                <Trigger>
                    .... Hier würd ich gerne meine Trigger auflisten...                  
                </Trigger>   
            </ControlTemplate.Triggers>
        </ControlTemplate> 
    </TabItem.Template>
</TabItem>

Mfg
ThrYleR

W
113 Beiträge seit 2006
vor 14 Jahren

Du musst die Trigger unter ControlTemplate.Triggers auflisten nicht unter Trigger.

Bei mir funktioniert das problemlos.

mfg,
XaN

T
ThrYleR Themenstarter:in
26 Beiträge seit 2009
vor 14 Jahren

Soo, danke nochmal für den Tipp. Hatte eigendlich auch alles Richtig!, .. ich sollte nur für Wochenende noch bissle ärger mit nach Hause nehmen 😜 .

Hab es gerade nochmal genauso gemacht wie Freitag, und jetzt geht alles ohne Probleme 🤔

Kann geschlossen werden

Danke nochmal

Mfg
ThrYleR