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 tkrasinger
Thema: WCF Service in IIS7 hosten mit HTTPS und WindowsAuthentifizierung
Am im Forum: Netzwerktechnologien

Hat jemand von euch ein Beispiel wie man im IIS 7 ein WCF Service mit HTTPS und WindowsAuth hosted?

Ich komm einfach nicht weiter, da ich jedesmal vom Client nur bekomme, dass kein Endpunkt an https://servername:port/MyService.svc existiert. Am Server selbst kann ich nichts feststellen.
Die WebSeite läuft bereits unter https, ich hab eine Default.aspx drinnen die ganz normal läuft.

Thema: Bing - Sprache der Ergebnisseite
Am im Forum: Web-Technologien

super danke, genau das was ich gesucht habe. Hast du dazu eine Doku gefunden?

Thema: Bing - Sprache der Ergebnisseite
Am im Forum: Web-Technologien

Ich spiel grad a bissl mit Google und Bing herum und hab dabei folgendes problem.

Bei Google kann ich über den Parameter hl die Sprache der Ergebnisseite beeinflussen. Also wenn ich de angeb kommt die Seite in Deutsch, bei en in english und bei fr in Französisch.

Weiß irgendwer wie man das bei Bing im QueryString angeben kann?

Thema: Impersonate() und Datenbankzugriff über Enterprise Library
Am im Forum: Rund um die Programmierung

Leider kann ich keiner der Alternativen zustimmen. Ich brauche die Impersonierung da sich jeder Benutzer mit seiner WindowsIdentity am Dienst -> WCFService -> DB anmelden soll, damit ich in der DB dann auch die Benutzernamen ermitteln kann (z.b. für Spalte ChangedBy).

Daher kann ich weder den Dienst unter einem bestimmen Konto laufen lassen, noch irgendwelche User in die Configs eintragen.

Der Dienst/WCF Service laufen natürlich nicht am selben Rechner.

Thema: Impersonate() und Datenbankzugriff über Enterprise Library
Am im Forum: Rund um die Programmierung

Ich hab derzeit große Schwierigkeiten bei einem Windows Service das WCF Services hosted:

Wenn ich das Service starte, was wiederum die WCF Services startet und dann einen Aufruf an eine WCF-Methode mache, welche Daten aus der DB holt, bekomme ich den Fehler dass sich der User {DomainName}\{MachineName}$ nicht am (remoten) Datenbank-Server anmelden kann.
Ich geh stark davon aus, das Service versucht mit dem lokalen System Konto (mit dem der Dienst gestartet wurde) gegen die DB zu gehen, was natürlich auf einen Remote-DB-Server nicht mehr geht.

Also mach ich um den Datenbank-Call eine Impersonierung:

using (ServiceSecurityContext.Current.WindowsIdentity.Impersonate())
{ 
    //DB-call
}

In WindowsIdentity.Name steht mein Username.

Bei der Impersonierung habe ich nun festgestellt, dass ich in diesem Abschnitt über keinerlei Rechte mehr verfüge. Ich kann keine Dateien lesen, schreiben oder sonst irgendwas. Was auch dazuführt, dass ich in diesem Abschnitt keine Assemblies mehr nachladen kann, weil ich eben keinen Zugriff auf die Platte habe.

Beim Aufruf meiner Stored Procedure krieg ich nun folgende Exception:
Zitat
System.TypeInitializationException: The type initializer for 'System.Data.SqlClient.SqlConnection' threw an exception.
-> System.TypeInitializationException: The type initializer for 'System.Data.SqlClient.SqlConnectionFactory' threw an exception.
-> System.TypeInitializationException: The type initializer for 'System.Data.SqlClient.SqlPerformanceCounters' threw an exception.
-> System.Security.SecurityException: Requested registry access is not allowed.
at System.ThrowHelper.ThrowSecurityException(ExceptionResource resource)
at Microsoft.Win32.RegistryKey.OpenSubKey(String name, Boolean writable)
at Microsoft.Win32.RegistryKey.OpenSubKey(String name)
at System.Diagnostics.PerformanceCounterLib.FindCustomCategory(String category, PerformanceCounterCategoryType& categoryType)
at System.Diagnostics.PerformanceCounterLib.IsCustomCategory(String machine, String category)
at System.Diagnostics.PerformanceCounter.Initialize()
at System.Diagnostics.PerformanceCounter.set_RawValue(Int64 value)
at System.Data.ProviderBase.DbConnectionPoolCounters.Counter..ctor(String categoryName, String instanceName, String counterName, PerformanceCounterType counterType)
at System.Data.ProviderBase.DbConnectionPoolCounters..ctor(String categoryName, String categoryHelp)
at System.Data.SqlClient.SqlPerformanceCounters..ctor()
at System.Data.SqlClient.SqlPerformanceCounters..cctor()
The Zone of the assembly that failed was:
MyComputer
--- End of inner exception stack trace ---
at System.Data.SqlClient.SqlConnectionFactory..cctor()
--- End of inner exception stack trace ---
at System.Data.SqlClient.SqlConnection..cctor()
--- End of inner exception stack trace ---

Ich denke, dass ich beim Impersonieren irgendwas falsch mache. Mir kommt das irgendwie spanisch vor, dass ich, wenn ich mich mit meinem User impersoniere, gar keine Rechte mehr habe etwas zu tun. Mein Problem ist leider auch, dass ich nach der Impersonierung nicht mehr feststellen kann, welcher User nun tatsächlich aktiv ist, weil ich einfach keine Möglichkeit finde, irgendwie etwas zu loggen (da ich ja keine Rechte auf die Platte habe) oder irgendwie mit der Umwelt zu kommunizieren.

Kann mir hier bitte jemand erklären, was ich falsch mache oder was ich machen muss, damit ich zur DB komme?

Danke

Thema: Welcher Film ist besser als das Buch?
Am im Forum: Smalltalk

Zitat von herbivore
möglicherweise hängt das einfach auch mit der Reihenfolge zusammen. Wie ist es denn, wenn du zuerst den Film siehst und dann das Buch liest. Kommst du dann auch zu dem gleichen Ergebnis?

Allemal. Ich hab sogar vor einigen Jahren mal "Die unendliche Geschichte" gelesen, wo ich vom Film total begeistert war. Aber selbst der kommt nicht annähernd ans Buch ran.
Herr der Ringe hab ich die ersten 2 Teile gesehen, dann das komplette Buch gelesen und dann den 3. Teil im Kino gesehen und schon wars so, dass der Film nicht mehr ans Buch reichte. Wobei Herr der Ringe natürlich wohl eine heftige Vorlage war.

Aber mir ist da grad ein Film eingefallen:
"It" von Stephen King. Das Buch war grausam langweilig und echt eine Überwindung es überhaupt fertig zu lesen.

Thema: Welcher Film ist besser als das Buch?
Am im Forum: Smalltalk

Zitat von HannesB
Zitat
alle bücher, die verfilmt wurden und die ich gelesen habe, waren um welten besser als ihre video-konkurenz.
stimmt.
Wobei ich sagen muss, dass ich von der Verfilmung von "Das Parfum" (sehr gutes Buch) positiv überrascht war.

Beim Parfum bin ich deiner Meinung. Anscheinend ist es bei Verfilmungen wohl nur so, dass man höchstens wohl eine Bewertung "Besser als gedacht" oder "Gar ned sooo schlecht" bekommen kann. Bei den meisten trifft wohl aber eher zu: "Lieber das Buch lesen".

Thema: Welcher Film ist besser als das Buch?
Am im Forum: Smalltalk

Zitat von herbivore
Die Frage, die man stellen kann, ist welche Filme werden ihrer Buchvorlage gerecht und bei welchen ist das nicht der Fall?

Die Frage ist aber: Welcher Film übertrifft seine Buchvorlage sogar?

Thema: Welcher Film ist besser als das Buch?
Am im Forum: Smalltalk

Bei welchen Filmen meint ihr, der Film wäre besser als das Buch?

Mir ist eigentlich noch kein Film untergekommen der besser als das Buch ist, was aber vielleicht auch daran liegen kann, dass man (oder ich) bei sehr vielen Filmen gar nicht weiß ob es eine Buchvorlage gibt.

PS:
Bitte nennt den Buchautor wenn ihr wisst, wäre leichter zum Nachschlagen.

Thema: Coding Styles Horror
Am im Forum: Smalltalk

ähem, das war auch nicht gemeint.

Wenn die Anweisung: Console.WriteLine("The variable is set to true."); lautet, kann die Ausgabe nicht "The flag is set to true." lauteten, oder gar die nicht vorhandene anweisung Console.WriteLine("The boolean flag is set to true."); ausgeführt werden.

Weiter gehts auch so im letzten beispiel, da sind die Anweisungen immer: Console.WriteLine("Character .." und die gemeinete Ausgabe wäre: "The character" ... einfach nur schlampig geschrieben.

Thema: Coding Styles Horror
Am im Forum: Smalltalk

Zitat von winSharp93
Zitat
Die Ausgabe lautet The flag is set to true.
Der Schreiber hatte wohl keinen guten Tag :)

Im nächsten Absatz heißt es sogar:
Zitat
Wenn die Auswertung des Ausdrucks zwischen den Klammern true ergibt, wird die Console.WriteLine("The boolean flag is set to true."); -Anweisung ausgeführt.

Thema: AntMe! und KI
Am im Forum: Rund um die Programmierung

mir raucht nur vom Lesen schon das hirn ...

Thema: Coding Styles Horror
Am im Forum: Smalltalk

Das waren vielleicht ein paar Helden:

If Nz(rs!strCodeBundesland, "") = "" Then
   strOut = strOut & "" & strEnde
End If
If Len(rs!strCodeBundesland) = 1 Then
   strOut = strOut & rs!strCodeBundesland & "  " & strEnde
End If
If Len(rs!strCodeBundesland) = 2 Then
   strOut = strOut & rs!strCodeBundesland & " " & strEnde
End If
If Len(rs!strCodeBundesland) = 3 Then
   strOut = strOut & rs!strCodeBundesland & strEnde
End If

Thema: Coding Styles Horror
Am im Forum: Smalltalk

Hab ich in einem (noch) produktiven Access Programm eines Kunden gefunden:
Die letzte Zeile ist das berühmte Tüpfelchen auf dem i.


If Len(strIn) = 1 Then strOut = "0000000000" & Left(strIn, Len(strIn))
If Len(strIn) = 2 Then strOut = "000000000" & Left(strIn, Len(strIn))
If Len(strIn) = 3 Then strOut = "00000000" & Left(strIn, Len(strIn))
If Len(strIn) = 4 Then strOut = "0000000" & Left(strIn, Len(strIn))
If Len(strIn) = 5 Then strOut = "000000" & Left(strIn, Len(strIn))
If Len(strIn) = 6 Then strOut = "00000" & Left(strIn, Len(strIn))
If Len(strIn) = 7 Then strOut = "0000" & Left(strIn, Len(strIn))
If Len(strIn) = 8 Then strOut = "000" & Left(strIn, Len(strIn))
If Len(strIn) = 9 Then strOut = "00" & Left(strIn, Len(strIn))
If Len(strIn) = 10 Then strOut = "0" & Left(strIn, Len(strIn))
If Len(strIn) = 11 Then strOut = Left(strIn, Len(strIn))

Thema: Bind kombinieren?
Am im Forum: Web-Technologien

Arbeite im asp.net kaum so mit Binds aber probier mal:


<ItemTemplate>
    <asp:Button runat="server" ID="btn_userName" Text='<%# Bind("UserSurname") + Bind("UserName") %>' />
</ItemTemplate>

Thema: Tatsächlich gebundenes Element ungleich DataContext
Am im Forum: GUI: WPF und XAML

Noch einfacher:

<Window x:Class="ID75930.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <StackPanel>
        <TextBox Text="{Binding Guid}" Name="txtGuid"></TextBox>
        <TextBox Text="{Binding Id}"></TextBox>
        <TextBox Text="{Binding ElementName=txtGuid, Path = DataContext}"></TextBox>
        <Button Name="btnCreateNew" Click="btnCreateNew_Click">Create New</Button>
        <Button Name="btnSwitch" Click="btnSwitch_Click">Switch Type</Button>
    </StackPanel>
</Window>


using System;
using System.Windows;

namespace ID75930
{
    public partial class Window1 : Window
    {
        private bool _showA;

        public Window1()
        {
            InitializeComponent();
        }

        void btnSwitch_Click(object sender, RoutedEventArgs e)
        {
            _showA = !_showA;
        }

        void btnCreateNew_Click(object sender, RoutedEventArgs e)
        {
            if (_showA)
                this.DataContext = new A();
            else
                this.DataContext = new B();
        }
    }

    public class A
    {
        public A()
        {
            this.Id = 1;
            this.Guid = Guid.NewGuid();
        }

        public int Id { get; set; }

        public Guid Guid { get; set; }

        public override bool Equals(object obj)
        {
            if (obj is A)
                return ((A)obj).Id == this.Id;
            else if (obj is B)
                return ((B)obj).Id == this.Id;
            else
                return false;
        }
        public override string ToString()
        {
            return "A:" + this.Id + ":" + this.Guid.ToString();
        }
    }

    public class B
    {
        public B()
        {
            this.Id = 2;
            this.Guid = Guid.NewGuid();
        }

        public int Id { get; set; }

        public Guid Guid { get; set; }

        public override string ToString()
        {
            return "B:" + this.Id + ":" + this.Guid.ToString();
        }
    }
}

Thema: Tatsächlich gebundenes Element ungleich DataContext
Am im Forum: GUI: WPF und XAML

hm, also nach sehr vielen Versuchen wo was schief läuft hab ichs jetzt endlich gefunden. Da ich mir denke, dass sowas vielleicht jemanden anderen auch mal passieren kann, da der Fehler wohl ein "Feature" (grml) der WPF ist hier mein Ergebnis:

Vereinfacht hatte ich folgendes:

Ein WCF Service stellt eine Methode OpenObject(id) zur Verfügung welche eine Instanz der Klasse A liefert. Diese hat die Eigenschaften "LastOpenTime" und "Id".
In der Service Methode wird ein Objekt der Klasse A instanziert und die Eigenschaft "LastOpenTime " immer mit der aktuellen Zeit befüllt.

In einem WPF-Control gibts einen Button um ein Objekt mit einer ID vom Service zu holen, die gelieferte Instanz von A wird dann dem DataContext des Controls zugewiesen. 2 Textboxen mit entsprechenden Bindings zeigen die Eigenschaften Id und LastOpenTime an.

Wenn man also immer wieder auf den Button clickt, sollte sich immer die Anzeige in jener TextBox ändern, in der "LastOpenTime" angezeigt wird.

Das war bei mir aber nicht der Fall. Die Textbox hat immer nur nach dem ersten WCF-Aufruf etwas angezeigt, dann hat sich die Anzeige nicht mehr verändert.

Nun, warum?

Neben der Klasse A gabs auch noch die Klassen B und C die nicht abgeleitet aber relativ ähnlich sind. Auch B und C hatten eine Eigenschaft "Id". Aufgrund einer gewissen BusinessLogik hätte es sein können, dass Ids über die Klassen hinweg (keine Identity!) gleich sind. Dass also z.B A.Id gleich B.Id ist. Also hab ich in der Klasse A die Methode .Equals() überschrieben und geprüft ob die ID des zu vergleichenden Objekts mit der this.Id übereinstimmt.

Anscheinend macht die WPF beim DataBinding aber folgendes, beim Aufruf der Zeile:

this.ControlToDisplayA.DataContext = openedA;

Hier geht WPF her und macht quasi einen "Nichts unnötig machen"-Check und vergleicht ob alt und neu im DataContext das selbe wären. Dieser Vergleich geschieht nun aber über Equals()-Methode und nicht über ==.
Da sich aber beim Holen der Instanz von A nie die ID verändert hat, sondern immer nur LastOpenTime, hat die WPF immer gemeint, das Objekt, das ich neu in den DataContext setzen will, ist das selbe was vorher drinnen war (laut Equals()-Methode) und ändert daher nichts*.

Die überschriebene Equals()-Methode einmal rausgenommen und schon funktioniert alles wie gewünscht.

*Nichts ist leider nicht ganz richtig, da sich der DataContext sehr wohl geändert hat, am Control und auch auf den TextBoxen die die Werte anzeigen. Was sich nicht verändert hat, war die interne DataItem/Source-Eigeschaft die im Binding der TextBoxen gespeichert war.
Dadurch hatte ich die Situation, dass die TextBox eigentlich den richtigen DataContext hatte und immer das richtige Objekt bekam, aber immer nur das inital eingesetzte Objekt angezeigt hat.

Thema: Eigene Konfiguration gesichert speichern
Am im Forum: Rund um die Programmierung

Zitat von jaensen
Guckst du FAQ: [FAQ] DB-Password/Kennwort/Connection-String sicher speichern

Also hatte ich recht, dass es keine Möglichkeit gibt das irgendwie hinzubekommen.

Thema: Tatsächlich gebundenes Element ungleich DataContext
Am im Forum: GUI: WPF und XAML

Ich habe in einem Window eine TextBox: <TextBox Text="{Binding Id}" Name="txtId"/>

Im Code setze ich dann am Window: this.DataContext = CurrentObject;

Die Id wird richtig angezeigt.
Dann hab ich einen Button in dessen Code das CurrentObject mittels WCF Service gespeichert wird. Vom Service krieg ich das gespeicherte Objekt wieder zurück und ich setze dann den DataContext neu (objekt hat eine neue Id bekommen):

this.DataContext = savedObject;

Mein Problem ist jetzt, dass sich der Text in der TextBox aber nicht ändert.

Der Event "DataContextChanged" der TextBox wird aufgerufen. Genau einmal und zwar zu dem Zeitpunkt zu dem ich den DataContext am Window neu setze.
Die TextBox hat auch einen neuen DataContext, wenn ich mir allerdings über txtId.GetBindingExpression(TextBox.TextProperty) das Binding hole, stelle ich fest, dass sich das DataItem im Binding nicht verändert hat. Da ist immer noch mein altes Objekt drinnen.

Wenn ich nach dem Speichern den DataContext zuerst auf null setze, und dann erst das gespeicherte Objekt reinsetze, wird der neue Text angezeigt. Die Variante wär aber nur eine Notlösung.

Was kann da mit dem Binding schiefgelaufen sein? Hab überhaupt keinen Plan mehr wo ich mich reinhängen könnte, um festzustellen ob am Binding irgendwas verändert wird.

Thema: Eigene Konfiguration gesichert speichern
Am im Forum: Rund um die Programmierung

Ich hab jetzt eine zeitlang rumgesurft aber irgendwie keine Lösung für mein Problem gefunden bzw. blick irgendwie nicht mehr durch:

Ich hab eine WPF Applikation in der ich eine .xml Datei verwende, wo ein gewisser Aufbau der Applikation konfigurierbar ist. Die App soll später über ClickOnce deployed werden.
Problem 1: Diese Datei soll für die User nicht lesbar sein

Im ersten Schritt habe ich versucht diese Datei zu verschlüsseln. Habe dazu einen Alg von MS gefunden der auch gut funktioniert. Problem dabei: Ich muss ein Passwort angeben.

Problem 2:
Aufgrund so lustiger sachen wie den Reflector kann ich das Passwort nicht einfach im Code stehen lassen und irgendwo in ein config legen bringt auch nicht viel.

Nun aber wie lege ich dieses Paswort nun geschützt ab?

Dann hab ich gedacht ich speichere das in der .config und verschlüssle die config.
Siehe dazu: RsaProtectedConfigurationProvider-Klasse

Dazu hab ich ein Testprogramm geschrieben dessen .config ich verschlüssle. Dann hab ich ein 2. Programm geschrieben, mit der ich die verschlüsselte config der ersten exe wieder entschlüssle ... bringt also irgendwie gar nix.

Daher nun meine Frage: Wo/Wie kann ich Passwörter oder ähnliches ablegen, ohne dass es irgendwie in einer config lesbar oder im Code lesbar (da ja über Reflector lesbar) abgelegt ist bzw. wie kann ich einfach einen appConfig.Settings Eintrag verschlüsseln sodass garantiert nur das eine (also mein) Programm diesen Eintrag auch wiederherstellen kann?

Bzw. geh ich die Sache überhaupt schon falsch an?

EDIT: Hab' ich ohne die DLLs/EXE des Programms selbst vor dem Reflector zu schützen, da überhaupt eine möglichkeit?

Thema: CryptIt
Am im Forum: Projekte

Zitat von stift
Ich verschluessle zuerst eine Datei in einen Programm.
Und danach soll diese Datei in einen andere Programm wieder entschlueselt werden. Aber dabei kommt folgender Fehler:

Padding is invalid and cannot be removed.

Hab das selbe Problem. Ich hab x.xml nach x.xml.crypt verschlüsselt:


CryptItComponent crypter = new CryptItComponent();
crypter.EncryptFile(file, file + ".crypt");

und dann das selbe wieder zurück:


CryptItComponent crypter = new CryptItComponent();
crypter.DecryptFile(file + ".crypt", file);

funktioniert aber aufgrund der genannten Exception nicht.

Frage noch dazu: Was muss ich alles einstellen, damit jemand nicht einfach mit der selben Komponente die Datei einfach wieder entschlüsseln kann?

@marsgk: Mir ist aufgefallen, dass du relativ oft den Tippfehler Enrypted statt Encrypted hast. Ist dann teils auch in argumenten etc. so.

Thema: [gelöst] Kyrillisch in SQL Server DB
Am im Forum: Datentechnologien

hm, hab in der Prozedur noch varchar gehabt ...

Thema: [gelöst] Kyrillisch in SQL Server DB
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: <SQL Server 2005>

Ich würde gerne kyrillische Zeichen in meine Datenbank speichern. Ich verwende für die Speicherung von Daten Prozeduren:

exec Person_update @ID = 1, @Firstname = '(?I:',@Lastname='(?I:'
exec Person_update @ID = 8, @Firstname = 'Jürgen',@Lastname='Graß'
(anbei Bild)

Da ich gelesen habe, dass Parameter immer mit der Collation der DB erstellt werden, hab ich die Collation auf Cyrillic_General_CI_AI umgestellt. Allerdings gehen jetzt die deutschen Zeichen nicht mehr.

Welche Collation muss ich verwenden bzw. geht das überhaupt?

Thema: Tabellen in WPF
Am im Forum: GUI: WPF und XAML

Toolkit: http://wpf.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=29117

Thema: [gelöst] SearchPattern auf Dateiname anwenden
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Besten Dank.

Thema: [gelöst] SearchPattern auf Dateiname anwenden
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Die DirectoryInfo Klasse hat eine Methode "GetFiles" der ich einen Pattern übergeben kann um nur bestimmte Dateien zu bekommen.

Ich übergeb aus meiner Klasse dieser Funktion "*.sql".

Nun hab ich aber auch eine andere Variante, in der ich schon Dateinamen bekomme, wie kann ich nun prüfen, ob dieser Pattern auf den Dateinamen zutrifft?

Einfach nur mit fileName.EndsWith(pattern) geht nicht, weil ja kein "*" im Dateinamen ist. Regex geht auch nicht, der Ausdruck ist nicht gültig.

Und einfach den "*" durch nichts ersetzen und dann prüfen gefällt mir nicht wirklich, weil ich ja im searchpattern z.B: auch "Release*_*.sql" oder so stehen könnte.

Jemand eine Idee?

Thema: einfache DependencyProperty vs. normale Property mit browsable
Am im Forum: GUI: WPF und XAML

Zitat von talla
bin grad am überlegen ob ich über DependencyProperties nicht mal einen Artikel schreiben sollte ;) Es scheint doch einige Missverständnisse zu geben wie DependencyProperties funktionieren.

Ein vernünftiger Artikel über:

"Was sind DPs? Wann brauche ich DPS, wann nicht? Wie lege ich diese an (snippet!)? Wie funktionieren sie und welche "Arten" gibt es (Attached, etc.)?

wär sicherlich sehr hilfreich. Für meinen Teil blick ich (denke ich) soweit durch, für mich war eben nur die Frage ob ich für ganz einfache Sachen eine DP brauche, weil es mir vorkommt, dass in der WPF nun grundsätzlich für alle Eigenschaften eines Controls eine DP angelegt wird.

Thema: einfache DependencyProperty vs. normale Property mit browsable
Am im Forum: GUI: WPF und XAML

Statisch ist eigentlich nur die "Definition" der Property. Soweit ich weiß speichert die WPF die Werte dann irgendwie/irgendwo in einem internen System/Speicher.

Thema: einfache DependencyProperty vs. normale Property mit browsable
Am im Forum: GUI: WPF und XAML

Also Binding wär schon mal ein relevanter Grund.

Ich frag nämlich, weil ich sehr häufig seh, dass eine DP erstellt, dann Probleme mit dem nicht aufgerufenen Setter entstehen (dürfte bekannt sein) und in der Property eigentlich gar nix großartig gemacht wird, was irgendwie einer DP bedürfte.

z.B eine Property "Caption" auf einem UserControl die irgendwo in einem Label in dem Control einen Wert setzt. Oder "IsReadOnly" das nur auf true/false (ohne Binding) gesetzt wird und dann irgendwie noch 3 andere Sachen macht.

Für solche Sachen sind DPs doch ziemlich unnötig oder?

@talla:
1. Wenn ich z.B. IsReadOnly brauche (ohne DataBinding) und dazu einen Event der besagt ob das verändert wurde oder nicht, würdest du eine DP bauen oder nicht?

2. was meinst du mit "effektiver"? In welcher Hinsicht sind sie effektiver? Sie bieten mehr an klar. Wie bei "IsReadOnly": Was wäre in so einem Fall schneller bzw. performanter?

Thema: einfache DependencyProperty vs. normale Property mit browsable
Am im Forum: GUI: WPF und XAML

Ok. macht es z.B: für eine Property "IsReadOnly" auf einem UserControl Sinn, diese als DP zu implementieren?

Edit: Das Thema sollte vielleicht lauten: "wann brauche ich eine DP und wann reicht eine normale Property?"

Eine DP für RegisterAttached() ist klar.