Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Briefkasten
Thema: WPF: ListBox DataTemplate IsSelected
Am im Forum: GUI: WPF und XAML

Mit einem DataTrigger im DataTemplate ist sowas möglich.

  <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}}, Path=IsSelected}" Value="True">

Siehe auch http://get-the-solution.net/2009/03/28/listbox-selecteditem-zusatzinformationen-anzeigen/

Thema: C# mit MySQL oder PHP verbinden
Am im Forum: Datentechnologien

Zitat von Palladin007
verwendetes Datenbanksystem: <MySQL>

Hi, wie kann ich mittels C# auf MySQL-Datenbanken zugreifen?
http://www.codeplanet.eu/tutorials/csharp/5-verbindung-zum-mysql-server-mit-csharp.html
Zitat von Palladin007
oder noch interessanter, dass ich mit C# funktionen und Methoden in ne DLL schreibe, und diese DLL dann mit PHP verwenden kann?

Ich glaube, das geht nur wenn du für PHP eine Extension schreibst, die auf deine C# dll zugreift. Dann kannst du vom PHP aus auf deine DLL Funktionen zugreifen.

C# DLL <PHP Extension> PHP Skript

Thema: von canvas ableiten - Elemente werden nicht dargestellt
Am im Forum: GUI: WPF und XAML

Von Canvas ableiten sollte kein Problem sein.

Warum fügst du deine Controls nicht über Children.Add() ein?

Thema: NetDataContractSerializer in XElement speichern
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: System.Xml.Linq;

Hallo,

ich speichere mein Model mittels

   
        public static void Save(this model g, String pfilename)
        {         using (FileStream fs = new FileStream(pfilename, FileMode.Create))
            using (XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(fs))
            {
                NetDataContractSerializer serializer = new NetDataContractSerializer();  // no type specified
                serializer.WriteObject(writer, g);

            }

Allerdings möchte ich die Speicher Extension so umgestalten, dass der Content in ein XElement gespeichert wird. Damit wäre man flexibler und könnte z.B. unterschiedliche modele zusammen abspeichern. Z.B. so:


XElement root = new XElement("Root");
XElement model = this.Model.Save();
XElement irgendwas = Irengedwas.getXElement();

root.Add(model);
root.Add(irgendwas);

SaveFile(root);


Allerdings weiß ich nicht wie ich den content vom NetDataContractSerializer in das XElement rein bekomme. Hat jemand eine Idee?

Thema: CustomControl - TimeLine wie am Besten?
Am im Forum: GUI: WPF und XAML

Hallo,

ich möchte ein TimeLine Control erstellen um z.B. Geschichtliche Ereignisse zu visualisieren.

Im Prinzip besteht die TimeLine aus einem Balken bei dem man nach Links als auch nach rechts also z.B. 20 Jahre vor bzw. zurück scrollen kann.

In diesem Balken werden alle Einträge über TimeLineElemente angezeigt, welche z.B. die Eigenschaft: Betrifft Jahr: 1914 Beschreibung:.

Wenn man in den Balken also in die TimeLine hineinscrollt soll die Skalierung auf Monate wechseln.

Siehe auch das Bild Anhang. Ich hoffe ich habe das nicht all zu konfus beschrieben.

Nun frage ich mich, wie man so ein Control am besten erstellt. Theoretisch könnte man das doch über ein UserControl mit einer ListBox machen die horizontal ausgerichtet ist.

Ich müsste zu den hinzugefügten TimeLineElementen dynamisch die restlichen Elemente in die ListBox als "platz Füller" hinzufügen.

Allerdings bin ich mir nicht sicher ob ich da bei vielen Elementen Performance Probleme bekomme. Auch das zoomen wird da etwas schwieriger. Vlt. kann man das so lösen http://stackoverflow.com/questions/850554/zoom-control-to-wpf-form

Eine andere Möglichkeit wäre ein Canvas + Controls welche die TimeLine Elemente darstellen. Dann dürfte das zoomen kein Problem darstellen.

Was meint ihr?
lg

Thema: Canvas - neue Controls mit Animation einblenden
Am im Forum: GUI: WPF und XAML

Oh... stimmt. das hatte ich ganz übersehen. :S

Jetzt funktionierts :)

Thema: Canvas - neue Controls mit Animation einblenden
Am im Forum: GUI: WPF und XAML

Danke für dein Bsp.

Ich habe es nochmal vereinfacht, weil ich es nicht zum Laufen bringe.
Habe ein Windows WPF Projekt mit folgendem Code erstellt:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <DockPanel>
        <Button DockPanel.Dock="Top" Click="Button_Click" Height="20"></Button>
        <Canvas DockPanel.Dock="Top" x:Name="_canvas" Background="Gray">
            <Canvas.Resources>
                <Style TargetType="{x:Type Button}">
                    <Style.Triggers>
                        <EventTrigger RoutedEvent="Button.Loaded">
                            <BeginStoryboard>
                                <Storyboard>
                                    <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.Opacity)">
                                        <SplineDoubleKeyFrame KeyTime="00:00:00.9000000" Value="1" />
                                    </DoubleAnimationUsingKeyFrames>
                                </Storyboard>
                            </BeginStoryboard>
                        </EventTrigger>
                    </Style.Triggers>
                </Style>
            </Canvas.Resources>
        </Canvas>
    </DockPanel>
</Window>

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            _canvas.Children.Add(new Button() { Width = 20, Height = 20 });
        }

Der Button wird ohne Transparent Effekt eingeblendet. Ich schau mal weiter, vlt finde ich noch den Fehler.
LG

Thema: Canvas - neue Controls mit Animation einblenden
Am im Forum: GUI: WPF und XAML

Hallo,

auf meinem Canvas können zur Laufzeit neue Controls hinzugefügt werden. Ich würde diese gerne mittels einer Animation einblenden. Bin leider nicht so der Animations Profi.

Ich habe probiert, zum Control das zum Canvas hinzugefügt wird, nach dem es fertig geladen wurde die Opacity von 0 auf 1 zu setzen.

    <Style TargetType="{x:Type local:myControl}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type local:myControl}">
                  [[..]]]
                </ControlTemplate>
            </Setter.Value>
        </Setter>
        <Style.Triggers>
            <EventTrigger RoutedEvent="Loaded">
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation Storyboard.TargetProperty="Opacity" From="0.0" To="1.0" Duration="0:10:5" />
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </Style.Triggers>
    </Style>

Allerdings passiert gar nichts. Hat jemand eine Idee warum? Muss ich die Animation doch im Canvas definieren? Wäre es auch möglich über RenderTransform das myControl von 0 auf 100% (also auf Width 40) zu skalieren. Also quasi dass die MyControls ins Canvas auf "poppen"?

LG

Thema: Sanfter Hintergrund wechsel
Am im Forum: GUI: WPF und XAML

Hallo,

vlt. ist das http://www.11011.net/wpf-transitions (Wischeffekt wie bei iphone!?) für dich auch intressant .

Thema: Ableiten von UserControls
Am im Forum: GUI: WPF und XAML

Hallo,

da ich nicht genau weiß was du vor hast hier noch folgendes als Ergänzung. In WPF gibt es Custom Controls und User Controls.

-UserControls soll man verwenden wenn man mehrere Control zu einem Control gruppieren möchte, um Komplexität zu kapseln, oder um die gruppierten Controls auf an mehreren Stellen wieder zu verwenden.
-keine Visuelle Anpassung benötigt wird

Custom Controls unterstützen Templates und Themes.

Hier ein Beispiel:
Wir möchten ein Control erstellen das eine Uhr darstellt. -> Custom Control.
Wir brauchen ein Control das aus TextBlock und TextBox besteht ->UserControl.

Wenn du ein BaseControl erstellst welches von UserControl erbt, und ein ExtendedControl das wiederum von BaseControl erbt, erbst du nur die in der Klasse definierten Funktionalitäten (Also keine Visuellen Eigenschaften).

Im ExtentdedControl must du im XAML auf die Propertie von BaseControl binden. Dann sollte das gehen.

Thema: Listbox mit 15k Elementen optimieren!?
Am im Forum: GUI: WPF und XAML

Probier mal beim Binding IsAsync=True anzugeben. Dann kannst du noch VirtualizingStackPanel.IsVirtualizing="True" aktivieren.

VirtualizingStackPanel Class

Thema: Ableiten von UserControls
Am im Forum: GUI: WPF und XAML

Probier mal das hier:


namespace Testprojekt
{
    public class UCBase : UserControl
    {
        public UCBase():base()
        {

        }
static UCBase()
{
BackgroundProperty.OverrideMetadata(typeof(UCBase ), new FrameworkPropertyMetadata(Brushes.Blue));

}
    }
}

Im UserControl must du jetzt auf die Background Property Binden. Z.B. so

<myTypes:UCBase x:Class="Testprojekt.UCInherit"
              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
              mc:Ignorable="d"
              d:DesignHeight="284" d:DesignWidth="338"
              xmlns:myTypes="clr-namespace:Testprojekt">
<myTypes:UCBase.Content>
     <Grid Background=="{Binding Path=Background,
	            RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type local:UCInherit}}}" >
 
    </Grid></myTypes:UCBase.Content>
 </myTypes:UCBase>

Thema: Alle Controls für kurze Zeit auf Aktiv setzen
Am im Forum: GUI: WPF und XAML

Hallo,

danke für den Tipp. Damit hats geklappt. Hier meine Lösung:

            Thread thread = new Thread(new ParameterizedThreadStart(delegate(object arr) { GetAllV((Vertex)(arr), null); }));
            thread.Start(graph.Vertices.First());

        }
        ManualResetEvent mre = new ManualResetEvent(false);
        public void GetAllV(Vertex v, Vertex firstVertex) //als bsp alle vertices mal durchlaufen
        {
            if (v == firstVertex) return;
            if (firstVertex == null) firstVertex = v;

            _GraphVisualization.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Action(
              delegate()
              {
                  _GraphVisualization.setFocus(v);
              }));
            mre.WaitOne(10 * 120);

            foreach (Edge e in v.Edges)
            {
                GetAllV(e.V, firstVertex);
                return; //weil z.b Vertex 3 -> 4 und 3->4 verbunden sein kann
            }

        }

Ich werd noch schauen, dass ich

_GraphVisualization.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Action(
              delegate()
              {
                  _GraphVisualization.setFocus(v);
              }));
das irgendwie auslagern kann, damit es etwas schöner aussieht.

Thema: Alle Controls für kurze Zeit auf Aktiv setzen
Am im Forum: GUI: WPF und XAML

Also angenommen ich will den Algo. DFS (Depth-first search) visualsieren)

Die Methode von DFS sieht dann in etwa so aus.

  procedure DFS(G,v):
2      label v as explored
3      for all edges e in G.incidentEdges(v) do
4          if edge e is unexplored then
5              w  G.opposite(v,e)
6              if vertex w is unexplored then
7                  label e as a discovery edge
8                  recursively call DFS(G,w)
9          else 
10             label e as a back edge

Jetzt muss ich irgendwie zeigen, dass der Algorithmus gerade bei Vertex x bzw. Edge y ist. Also setze ich den Focus im DFS Algo. (grob das man ca. weiß was ich meine)

 procedure DFS(G,v):
     label v as explored
     for all edges e in G.incidentEdges(v) do
         [COLOR]_graphcontrol.setFocus(edge);[/COLOR]
         if edge e is unexplored then
             w ? G.opposite(v,e)
             if vertex w is unexplored then
                [COLOR]_graphcontrol.setFocus(vertex );[/COLOR]
                 label e as a discovery edge
                 recursively call DFS(G,w)
         else 
             label e as a back edge

Nun das Problem ist wie gesagt, dass der Algo. viel zu schnell abgearbeitet wird. Nur wie kann ich hier den DispatcherTimer verwenden?

Als einzige Lösung fällt mir ein, dass ich zum DFS algo. Flags einbauen, damit der Dispatcher weiß, wo er bereits war, und wo er weiter machen muss. Das ganze wird aber somit unglaublich umständlich und komplex. Hat jemand vlt. eine Idee wie das ganze einfacher gehen würde?

Thema: Alle Controls für kurze Zeit auf Aktiv setzen
Am im Forum: GUI: WPF und XAML

Zitat von xxMUROxx
@Briefkasten,
wenn du die Controls im Abstand von .9 Sekunden fokusieren möchtest, schiebe alles zusammen in einen DispatcherTimer, der dir alle .9 Sekunden eine Aktion ausführt. Dort in dieser Aktion kannst du deine Controls fokusieren und machen was du willst, da die Aktion immer im GUI-Thread ausgeführt wird

Gruß
Michael

Hallo,

vielen Dank! Das war die Lösung.

Hier noch ein Bsp http://wangmo.wordpress.com/2007/09/07/dispatchertimer-in-wpf/

Hier noch der Code:

            //count all VertexControls
            int counter = _GraphVisualization.VertexVisualizationList.Count;

            timer.Interval = TimeSpan.FromMilliseconds((9 * 120));
            //iterate from behind and save iteration position so that only one control in the eventhandler will be set IsFocused=true
            timer.Tick += new EventHandler(new EventHandler(delegate
            {
                if (counter == -1) this.timer.Stop();
                for (int i = counter; i > 0; i--)
                {
                    Vertex v = _GraphVisualization.VertexVisualizationList[i - 1].Vertex;

                    _GraphVisualization.setFocus(v);
                    counter--;
                    return;

                }
            }));
            timer.Start();

Thema: Alle Controls für kurze Zeit auf Aktiv setzen
Am im Forum: GUI: WPF und XAML

Ich habs auch so schon probiert gehabt ohne erfolg:


            Thread setFocusonControls = new Thread(new ThreadStart(delegate
            {

                this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Action(
                    delegate()
                    {
                        foreach (var item in this.buttonlist)
                        {
                            item.Background = Brushes.Green;
                            Thread.Sleep(900);


                        }
                    }));

            }));
            setFocusonControls.Start();

Im Prinzip geht, es darum, dass ein Algorithmus visualisiert wird. Je nach dem bei welchem Element gerade ist wird das Visualisierende Element Gefocused, damit er per Trigger anzeigt, dass der Algorithmus gerade "hier" ist.

Da er den Algorithmus zu schnell abarbeitet, muss ich ihn bremsen, damit man auch sieht, wie er schritt für schritt alles ab arbeitet.

Gibts eine bessere möglichkeit, das mit Thread.Sleep zu lösen?

Thema: Alle Controls für kurze Zeit auf Aktiv setzen
Am im Forum: GUI: WPF und XAML

Hallo,

ich habe eine Liste von Controls die ich alle nach der Reihe kurz aktiv setzen will. Ich hab das momentan so gemacht:

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            foreach (var item in _GraphVisualization.VertexVisualizationList)
            {
                item.Focus();
                Thread.Sleep(900);
            }
        }
                    <Style TargetType="{x:Type ui:VertexVisualization}">
                        <Style.Triggers>                           <Trigger Property="IsFocused" Value="True">
                                <Setter Property="BorderBrush" Value="Green" />
                            </Trigger>
                        </Style.Triggers>
                    </Style>

Das Programm soll also alle Controls kurzzeitig auf Aktiv setzen, damit man sieht wo sie sich befinden.

Allerdings klappt das mit dem Focus nicht so recht. Wenn ich auf den Button klicke tut sich einige Zeit gar nichts und am Schluss ist nur ein Control Grün umrahmt.

Hat jemand eine Idee warum das so ist und wie ich das lösen kann?

Thema: Auf Canvas hinzugefügtes Element hat keinen Parent
Am im Forum: GUI: WPF und XAML

Zitat von winSharp93
Dann führe diesen Vorgang doch einfach dann aus, wenn sich die Parent Property ändert; siehe Listening to DependencyProperty changes.

Oder probiere mal, den Code in OnVisualParentChanged zu schreiben.

Hallo,

leider stellt die DP Parent keine Override Methode zu Verfügung. Evtl. weil sie readonly ist :(.

Die überschriebene OnVisualParentChanged() Funktion liefert im oldParent Parameter immer nur den Wert NULL.

Thema: Auf Canvas hinzugefügtes Element hat keinen Parent
Am im Forum: GUI: WPF und XAML

Zitat von jogibear9988
Mhmm...

Machs doch so:

var ev=new EdgeVisualization();
this.Canvas.Children.Add(ev);
ev.Edge = ed;

dann ist wenn Edge zugewiesen wird, Parent bekannt...

Wenn jemand anderer das Control verwendet und nicht weiß, dass man genau diese Reihenfolge befolgen muss, funktioniert das Control nicht.

Oder angenommen, wenn ich nach einige Jahren das Control wieder verwende, und diese eine Sache vergessen habe, bin ich wieder am rum Debuggen, weil es nicht funktioniert. Was ich eigentlich sagen will ist, dass die Sache so nicht richtig gelöst wäre.
Zitat von jogibear9988
Welches Callback meinst du? Ich kann hier keins erkennen verwundert

Die CallBack Funktion wird im DP Edge gesetzt.

 public static readonly DependencyProperty EdgeProperty =
            DependencyProperty.Register("Edge", typeof(Get.Model.Graph.Edge), typeof(EdgeVisualization), new UIPropertyMetadata(null, OnEdgeChanged));

In der Callback Funktion habe ich ursprünglich nach dem Canvas gesucht.

SG

Thema: Auf Canvas hinzugefügtes Element hat keinen Parent
Am im Forum: GUI: WPF und XAML

Zitat von Briefkasten

this.Canvas.Children.Add(new EdgeVisualization() { Edge = ed });

Der Code sagt eigentlich alles... Man muss nur genau hinsehen, um den "Fehler" zu erkennen.

Es wird zu erst das EdgeVisualization Controll erstellt und somit als erstes die Callback Funktion aufgerufen, in dem der Canvas in der Property Parent gesucht wird.

Da zu diesem Zeitpunkt, das EdgeVisualization noch nicht dem Canvas hinzugefügt wurde, ist die Property Parent eben NULL.

Nunja... wie kann ich jetzt im EdgeVisualization Control rausfinden, wann der Parent!=null ist?

Einen Timer einbauen der ständig überprüft ob der Parent !=null ist, ist nicht gerade die schönste Lösung.

Hat jemand eine Idee?

Thema: Auf Canvas hinzugefügtes Element hat keinen Parent
Am im Forum: GUI: WPF und XAML

Wenn ich auf dem Canvas das Control x hinzufüge, dann wird im control x.Parent=Canvas sein.

Die Parent Eigenschaft kann man nicht setzen, da sie readonly ist (was auch Sinn macht)

Thema: Auf Canvas hinzugefügtes Element hat keinen Parent
Am im Forum: GUI: WPF und XAML

Hallo,

ich füge zu meinem Canvas mit

this.Canvas.Children.Add(new EdgeVisualization() { Edge = ed });

mein Control hinzu.

Das EdgeVisualization hat eine dp namens Edge. In der Callback Funktion will ich auf den Canvas über edgeVisualization.Parent zugreifen. Allerdings ist der NULL. Wie kann das sein? Da müsst doch das Canvas drinnen sein?! Hat jemand eine Idee woran das liegen könnte?

Thema: UserControl auf Canvas verschieben
Am im Forum: GUI: WPF und XAML

Ich musste "um" das vertexcontrol logischerweise das ContentControl legen. Außerdem muss man, die Propertie Template im Codebehind manuel festlegen. Ich ging davon aus, dass wenn der Style wie folgt definiert ist

<ControlTemplate TargetType="ContentControl">

auto. an alle ContentControls hinzugefügt wird (also auch die Controls welche ich zut Laufzeit im Codebehind anlege), was dem aber so nicht ist.

Thema: UserControl auf Canvas verschieben
Am im Forum: GUI: WPF und XAML

Hallo,

hab schon länger nichts mehr mit c# udn WPF gemacht und bin ein bisschen eingerostet. Ich versuche in einer custom controly libary ein canvas zu erstellen auf dem die controls verschoben werden können.

Ich orientiere mich an diesem Beispiel: WPF Diagram Designer: Part 1

Mein Template sieht so aus:

 <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type local:GraphVisualization}">
                    <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
                        <Canvas Background="{TemplateBinding Background}" x:Name="_Canvas">
                            <Canvas.Resources>
                                <ControlTemplate x:Key="DesignerItemTemplate" TargetType="ContentControl">
                                    <Border DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}}" BorderBrush="Transparent" BorderThickness="0">
                                        <StackPanel Background="Green">
                                           das <!--Here we place our MoveAbelItem control to give the contentpresenter the ability that it can be moved-->
                                            <local:MoveAbelItem Cursor="SizeAll"/>
                                            <!--The ContentPresenter can be for example the VertexVisualization control -->
                                            <ContentPresenter Content="{TemplateBinding ContentControl.Content}" />
                                        </StackPanel>
                                    </Border>
                                </ControlTemplate>
                            </Canvas.Resources>
                            <ContentControl Template="{StaticResource DesignerItemTemplate}"></ContentControl>
                        </Canvas>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>

Im Codebehind füge ich über


 Canvas.Children.Add(vertexcontrol);

mein control hinzu was auch klappt. Aber anscheinend, erhält dieses Control nicht den ContentControlStyl DesignerItemTemplate, weil die Controls keinen grünen Hintergrund haben. Außerdem müsste sich der Maus Cursor ändern.

Hat jemand eine Idee warum die hinzugefügten Controls nicht das ControlTemplate DesignerItemTemplate zugewiesen bekommen (sollte ja auto. gehen, weil sie im Canvas.Content sind)?

LG

brief

Thema: HyperlinkButton Style soll bei MouseOver Background ändern
Am im Forum: GUI: WPF und XAML

Hallo,

ich hab das so gelöst. VS 2010 Datei -> Neu -> Projekt -> Silverlight Navigation Project -> Im Resouce Dictionary wird ein Style erstellt, bei dem Hover effekte usw. aktiviert ist.

Die Realisierung find ich doch etwas eigenartig.

Es gibt 2-3 Border und je nach dem welche Rahmenfarbe man braucht, schaltet man die Visibility per Trigger.

Es wäre doch viel einfacher, glaub ich zumindest, wenn man nur einen Border hat und die Farbe per ColorAnimation setzt.


[.Trigger]
</VisualStateManager.VisualStateGroups>
                        <Rectangle x:Name="FocusVisualElement" Stroke="{TemplateBinding BorderBrush}" StrokeThickness="2" Opacity="0" Margin="-1" RadiusX="1" RadiusY="1"/>
                        <Border x:Name="ActiveBorder" MinWidth="{TemplateBinding MinWidth}" MinHeight="{TemplateBinding MinHeight}" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="1" Opacity="0"/>
                        <Border x:Name="ContentBorder" MinWidth="{TemplateBinding MinWidth}" MinHeight="{TemplateBinding MinHeight}" Opacity="1">
                            <ContentPresenter x:Name="ContentPresenter" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}" Opacity="1">
                                <ContentPresenter.Effect>
                                    <DropShadowEffect ShadowDepth="0" Color="#FF484848" Opacity="0.65" BlurRadius="0"/>
                                </ContentPresenter.Effect>
                            </ContentPresenter>
                        </Border>
                        <Border x:Name="InteractiveBorder" MinWidth="{TemplateBinding MinWidth}" MinHeight="{TemplateBinding MinHeight}" Background="{TemplateBinding Background}" BorderThickness="1,1,1,1" Opacity="0" BorderBrush="{StaticResource HoverHyperLinkBackgroundColorBrush}" CornerRadius="1,1,1,1"/>
                        <Border x:Name="InteractiveElementBorder" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Visibility="Collapsed">
                            <TextBlock x:Name="InteractiveElement" Foreground="{TemplateBinding Foreground}" FontSize="{TemplateBinding FontSize}" FontWeight="{TemplateBinding FontWeight}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" Text="{TemplateBinding Content}"/>
                        </Border>
                        <TextBlock x:Name="DisabledOverlay" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" Text="{TemplateBinding Content}" Foreground="#FFAAAAAA" Visibility="Collapsed"/>

mfG

Thema: HyperlinkButton Style soll bei MouseOver Background ändern
Am im Forum: GUI: WPF und XAML

Hallo,

korrigiere mich wenn ich falsch liege, aber das msdn bsp funktioniert nur mit wpf oder?

Thema: HyperlinkButton Style soll bei MouseOver Background ändern
Am im Forum: GUI: WPF und XAML

Hallo,

hast du ein Beispiel wo TriggerAction in einem Style verwendet wird?

Thema: HyperlinkButton Style soll bei MouseOver Background ändern
Am im Forum: GUI: WPF und XAML

Hallo,

ich hab mir das HyperlinkButton von Microsoft heruntergeladen und möchte, wenn man mit der Maus darüber fährt, dass sich die Hintergrundfarbe ändert. Ich hab jetzt schon ein paar sachen probiert, aber es will nicht. Hat sonst noch jemand eine Idee? (SL .NET 4.0)


[...]
    xmlns:vsm="clr-namespace:System.Windows;assembly=System.Windows"
[...]
<!--
    HyperlinkButton
    [URL]http://msdn.microsoft.com/en-us/library/cc296242%28v=vs.95%29.aspx[/URL]
    -->
    <Style TargetType="HyperlinkButton">
        <Setter Property="Foreground" Value="#FF73A9D8" />
        <Setter Property="Padding" Value="2,0,2,0"/>
        <Setter Property="Cursor" Value="Hand"/>
        <Setter Property="HorizontalContentAlignment" Value="Left"/>
        <Setter Property="VerticalContentAlignment" Value="Top"/>
        <Setter Property="Background" Value="Transparent" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="HyperlinkButton">
                    <Grid x:Name="Grid" Cursor="{TemplateBinding Cursor}" Background="{TemplateBinding Background}">
                        <vsm:VisualStateManager.VisualStateGroups>
                            <vsm:VisualStateGroup x:Name="CommonStates">
                                <vsm:VisualState x:Name="Normal"/>
                                <vsm:VisualState x:Name="MouseOver">
                                    <Storyboard>
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="UnderlineTextBlock" Storyboard.TargetProperty="Visibility" Duration="0">
                                            <DiscreteObjectKeyFrame KeyTime="0">
                                                <DiscreteObjectKeyFrame.Value>
                                                    <Visibility>Visible</Visibility>
                                                </DiscreteObjectKeyFrame.Value>
                                            </DiscreteObjectKeyFrame>
                                        </ObjectAnimationUsingKeyFrames>

                                        <ColorAnimation Duration="0" To="Red" Storyboard.TargetProperty="(Grid.Background).(SolidColorBrush.Color)" Storyboard.TargetName="Grid"/>  
                                    </Storyboard>
                                </vsm:VisualState>
                                <vsm:VisualState x:Name="Pressed">
                                    <Storyboard>
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="UnderlineTextBlock" Storyboard.TargetProperty="Visibility" Duration="0">
                                            <DiscreteObjectKeyFrame KeyTime="0">
                                                <DiscreteObjectKeyFrame.Value>
                                                    <Visibility>Visible</Visibility>
                                                </DiscreteObjectKeyFrame.Value>
                                            </DiscreteObjectKeyFrame>
                                        </ObjectAnimationUsingKeyFrames>
                                    </Storyboard>
                                </vsm:VisualState>
                                <vsm:VisualState x:Name="Disabled">
                                    <Storyboard>
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="DisabledOverlay" Storyboard.TargetProperty="Visibility" Duration="0">
                                            <DiscreteObjectKeyFrame KeyTime="0">
                                                <DiscreteObjectKeyFrame.Value>
                                                    <Visibility>Visible</Visibility>
                                                </DiscreteObjectKeyFrame.Value>
                                            </DiscreteObjectKeyFrame>
                                        </ObjectAnimationUsingKeyFrames>
                                    </Storyboard>
                                </vsm:VisualState>
                            </vsm:VisualStateGroup>
                            <vsm:VisualStateGroup x:Name="FocusStates">
                                <vsm:VisualState x:Name="Focused">
                                    <Storyboard>
                                        <DoubleAnimation Storyboard.TargetName="FocusVisualElement" Storyboard.TargetProperty="Opacity" Duration="0" To="1"/>
                                    </Storyboard>
                                </vsm:VisualState>
                                <vsm:VisualState x:Name="Unfocused"/>
                            </vsm:VisualStateGroup>
                        </vsm:VisualStateManager.VisualStateGroups>
                        <TextBlock
                          x:Name="UnderlineTextBlock"
                          Text="{TemplateBinding Content}"
                          HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                          VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                          Margin="{TemplateBinding Padding}"
                          TextDecorations="Underline"
                          Visibility="Collapsed"/>
                        <TextBlock Canvas.ZIndex="1"
                          x:Name="DisabledOverlay"
                          Text="{TemplateBinding Content}"
                          Foreground="#FFAAAAAA"
                          HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                          VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                          Margin="{TemplateBinding Padding}"
                          Visibility="Collapsed"/>
                        
                        <ContentPresenter 
                          x:Name="contentPresenter"
                          Content="{TemplateBinding Content}"
                          ContentTemplate="{TemplateBinding ContentTemplate}"
                          VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                          HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                          Margin="{TemplateBinding Padding}"/>
                    
                        <Rectangle x:Name="FocusVisualElement" Stroke="#FF6DBDD1" StrokeThickness="1" Opacity="0" IsHitTestVisible="false" />
                        
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

Thema: ThirdParty Klassen Serializable machen
Am im Forum: Rund um die Programmierung

Hallo,

wir haben einen neuen Pluginmanager, der voraussetzt dass das ILog Objekt, von log4net, in den Plugins serialisierbar ist.

Ich hätte eine neue Klasse gemacht die von der ThirdParty Klasse erbt und meine neue Klasse mit dem Attribut [Serializable] gekenntzeichnet.

Da ich das Objekt von

ILog log = LogManager.GetLogger(typeof(Program));

erhalte, bekomme ich das Interface ILog zurück, das serialisierbar sein muss.

Aber vom ILog Typ kann ich ja nicht erben. Hat jemand eine Idee, wie ich das bewerkstelligen kann?

Thema: Suche kostenlos Web-Hosting ohne Werbung
Am im Forum: Smalltalk

Hallo,

lima-city.de hat keine Werbung und es lässt sich über fpsockets Emails verschicken.

Ich glaub auf Anfrage kann man eine bestimmte Anzahl von Emails mit mail() verschicken.