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: einfache DependencyProperty vs. normale Property mit browsable
Am im Forum: GUI: WPF und XAML

Kann mir jemand den Unterschied zwischen einer DependencyProperty die ich nur mit Register() anlege und einer "normalen" Property mit [Browsable(true)]" erklären?

Thema: Wie Methode strukturieren, wenn der Rückgabewert von einer Abfrage abhängt?
Am im Forum: Rund um die Programmierung

Zitat von 7.e.Q
Daher würde ich die Methode so aussehen lassen:


string Foo(bool b) {
    return (b ? "baz" : "bar");
}

Würde bei mir genauso aussehen.

Thema: Alle Klassen mit bestimmtem Attribut auslesen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Kannst alles über die Reflection abfragen.

Musst nur den Typ deiner Klasse ermitteln und mit GetMethods() die methoden durchgehen. Mit GetCustomAttributes() kannst dann prüfen ob das TestAttribute auf der Methode ist und mit Invoke kannst du die Methode ausführen. Wenn du den Methoden Argumente übergeben musst, musst dir halt überlegen wo du da die Werte herkriegst die du im Invoke() mitgibst.

Thema: Subselect bei Bedingung nicht ausführen
Am im Forum: Datentechnologien

@Florian:

Danke für deinen Beitrag. Da hab ich wohl noch einiges zu überdenken.

Thema: Subselect bei Bedingung nicht ausführen
Am im Forum: Datentechnologien

Wie soll ich das CASE in die WHERE Klausel bringen? Kannst du mir das anhand meines Beispiels vom Startbeitrag zeigen? Das Echtbeispiel kann ich das zu 99% genauso machen.

Thema: Subselect bei Bedingung nicht ausführen
Am im Forum: Datentechnologien

Ja, in C# wird bei einem OR (also ||) auch nur bis dahin ausgewertet, wo das OR evtl. noch negativ werden könnte.
Genau sowas bräuchte ich jetzt auch am SQL Server.

Thema: Subselect bei Bedingung nicht ausführen
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: SQL Server 2005

DECLARE @s int

SELECT * FROM sys.sysobjects WHERE @s is null OR name in ( SELECT name FROM sys.syscolumns)

Im Ausführungsplan stelle ich fest, dass das SubSelect auf die syscolumns ausgeführt wird, obwohl @s immer null ist (setze es ja nie).
Wie kann ich das oben angeführte Statement absetzen, ohne dass der Server durch die syscolumns durch muss?

(Das Statement ist natürlich nur beispielhaft, ich brauch so was ähnliches natürlich für meine Echt-Tabellen, und ich will verhindern, dass zuviele Daten abgefragt werden, wenns gar nicht gebraucht wird)

Thema: komische Typkonvertierung von string in short
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Danke für die Info an beide, dann lag ich ja eh ned daneben.

Thema: komische Typkonvertierung von string in short
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

[Offtopic]
@Peter:
Sag mal weißt du die internen Sachen einfach so oder hast du schon alle internen .NET Assemblies einmal mit einem Reflector durchleuchtet? Oder schaust du je nach Frage dann konkret nach? Wenn ja, was benutzt du dafür? Den jetzt RedGate Reflector (ehemals Lutz Roeder?)

Thema: Coding Styles Horror
Am im Forum: Smalltalk

is klar, war nur ein zusammengekürztes Beispiel fürs Posten, die Methoden heißen im wirklichen Code anders und tun auch noch etwas mehr ...

Thema: Coding Styles Horror
Am im Forum: Smalltalk

und in der Validierungs-Funktion dann noch diese total unnötigen sachen:


            // Check if the checksum equals the fourth digit
            if (checksum != digits[3])
            {
                // No - this is NOT a valid SVN
                return false;
            }

            // All tests passed
            return true;
        }

Thema: Coding Styles Horror
Am im Forum: Smalltalk

Hier mal wieder was für die Rubrik: "Warum einfach, wenns auch kompliziert geht":

public bool CheckSozialversicherungsnummer(DateTime? birthDate, string svnPrefix)
{
    if (birthDate.HasValue)
    {
        StringBuilder sb = new StringBuilder(svnPrefix);
        if (birthDate.Value.Day < 10)
        {
            sb.Append("0");
        }
        sb.Append(birthDate.Value.Day);
        if (birthDate.Value.Month < 10)
        {
            sb.Append("0");
        }
        sb.Append(birthDate.Value.Month);
        sb.Append(birthDate.Value.Year % 100);

        return ValidateSozialversicherungsnummer(sb.ToString());
    }
    else
    {
        return false;
    }
}

Hab das jetzt umgebaut (und richtiggestellt):

public bool CheckSozialversicherungsnummer(DateTime? birthDate, string svnPrefix)
{
    if (birthDate.HasValue)
    {
        return ValidateSozialversicherungsnummer(svnPrefix + birthDate.Value.ToString("ddMMyy"));
    }
    else
    {
        return false;
    }
}

Thema: Arbeitstage berechnen mit einem bestimmten Startdatum
Am im Forum: GUI: Windows-Forms

Das wird ohne Schleife nicht gehen, da du bei jedem Tag der dazwischen liegt, natürlich noch abfragen musst ob das ein Arbeitstag ist.

Feiertagsabfragen solltest du hier im Forum genügend finden.

wäre dann in etwa sowas:

DateTime dt = start;
for(int i = 0; i < daysToAdd;)
{
   dt = dt.AddDays(1);
   if( IstArbeitstag(dt))
   {
      i++;    
   }
}
return dt;

Thema: In Konsole ein ? schreiben
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

schon mal probiert:

Console.WriteLine("?");

Thema: WCF Service Host mit Fiddler abhören
Am im Forum: Netzwerktechnologien

ja, normales surfen seh ich im fiddler

Thema: Binding einer Eigenschaft an DependencyProperty eines UserControls
Am im Forum: GUI: WPF und XAML

hm, hab deinen Code ausprobiert, da erscheint überhaupt nix, stattdessen seh ich im output:

System.Windows.Data Error: 3 : Cannot find element that provides DataContext. BindingExpression:Path=Data; DataItem=null; target element is 'ChildBindingTest2' (Name=''); target property is 'DataContext' (type 'Object')

Zitat
(btw - DataContext ist ein dependency property - dh du brauchst "Value" gar nicht sondern kannst direkt DataContext binden - genau wie in mein beispiel beim hauptfenster)

stimmt wenn ich <c:TestControl DataContext="{Binding Child}" ../> schreibe funktionierts.

Hab jetzt mal wieder ein bissl rumprobiert und folgendes festgestellt. Sobald ich im TestControl den eigenen DataContext umstel, bekomm ich vom parent keine Änderungen mehr mit.

Thema: Spaltennamen aus SQL Server Datenbank bekommen
Am im Forum: Datentechnologien

Wenn du das so machst würd ichs mal mit reader.GetString(3) probieren.

Du fragst nämlich sonst immer nur auf die erste Spalte ab und holst damit immer nur den DB namen.

Oder:

du machst "SELECT Column_Name FROM .."

und bleibst bei GetString(0)

Thema: WCF Service Host mit Fiddler abhören
Am im Forum: Netzwerktechnologien

hm, so richtig durchblicken tu ich nicht.

Ich hab jetzt in den configs alles so wie vorher, also kein proxy eingestellt und die endpunkte auf localhost:5300

In den IE-Optionen hab ich nun ipv4.fiddler mit Port 5300 eingestellt.

Das Programm funktioniert jetzt, aber im Fiddler seh ich nix.

Thema: Binding einer Eigenschaft an DependencyProperty eines UserControls
Am im Forum: GUI: WPF und XAML

In:

<c:TestControl Value="{Binding Child}"/>

Thema: WCF Service Host mit Fiddler abhören
Am im Forum: Netzwerktechnologien

Zitat von LastGentleman
Prinzipel müsste es reichen, wenn der IE so konfiguriert ist das er mit dem Fiddler zusammenarbeitet und useDefaultWebProxy = true gesetz ist.

Den Fiddler als Proxy im IE setzen?

Thema: WCF Service Host mit Fiddler abhören
Am im Forum: Netzwerktechnologien

Kannst du mir bitte erklären wie ich das mach?

Ich hab beim Binding am Server und am Client nun "proxyAddress="http://ipv4.fiddler:5300" angehängt. Dann hat er gemeckert dass ich ned gleichzeit useDefaultWebProxy verwenden darf, also hab ich das auf false gesetzt.

Jetzt krieg ich laut Fehlermeldungen, dass der Endpunkt nicht vorhanden ist. Die Endpunkte hab ich auf localhost:5300 gelassen.
Nehm ich den Port von den Endpunkt-Adressen weg, krieg ich "(405) Method not allowed".

Thema: Binding einer Eigenschaft an DependencyProperty eines UserControls
Am im Forum: GUI: WPF und XAML

Zitat von Mr Evil
hast du beim ValueChanged mal n breakpoint gesetzt und geschaut ob auch das neue DataContext ankommt ?
wenn ja wirds vermutlich so sein das das datacontext zwar gesetzt wird - aber die ui einfach nicht aktualisiert wird

Hab ich gemacht, ich komm beim Button Click weder in ValueChanged, noch in den setter von Value. Ich hab auch einen Breakpoint in den getter der Eigenschaft "Child" reingesetzt. Dort komm ich beim Button Click nur einmal rein. Da vermute ich, dass das aber wohl vom Binding "Child.Name" kommt.
Für mich scheint es so, als würde das Binding überhaupt gar nicht mehr angegriffen werden. Wenn ich die Form lade, komm ich nämlich 3 mal in "Child" vorbei (bei Child.Name, für Child selbst und im TestControl bei SetValue).

Thema: Spaltennamen aus SQL Server Datenbank bekommen
Am im Forum: Datentechnologien

Zitat von Midnight Run
Dennoch bekomme ich immer einen Error bei folgenden SQL Befehl :

SELECT * FROM INFORMATION_SCHEMA.Columns where TABLE_NAME = [tabellenName]

hm, was bekommst du da für einen Fehler?

Wenn du einfach nur die Spaltennamen brauchst würd ich aber auch die Lösung von malignate empfehlen, das ist am einfachsten.

Thema: Binding einer Eigenschaft an DependencyProperty eines UserControls
Am im Forum: GUI: WPF und XAML

(Ich weiß es ist etwas lang)
Ich binde eine Eigenschaft einer Klasse an eine DependencyProperty eines UserControls. Das funktioniert einwandfrei. Wenn ich allerdings nun auf dem HauptWindow den kompleten DataContext ändere, wird die Property, die an die DP vom UserControl gebunden ist, nicht neu gebunden und im Label des UserControls bleibt der "alte" Wert stehen. Wie kann ich erreichen, dass ich die Änderung auch im UserControl mitbekomme bzw. warum wird das Binding am UserControl nicht aktualisiet?

<Window x:Class="WPFTest.ChildBindingTest"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:c="clr-namespace:WPFTest"
    Title="ChildBindingTest" SizeToContent="WidthAndHeight">
    <Grid>
        <StackPanel Orientation="Vertical">
            <StackPanel Orientation="Horizontal">
                <Label>Name:</Label><Label Content="{Binding Name}"></Label>
            </StackPanel>
            <StackPanel Orientation="Horizontal">
                <Label>Child Name:</Label><Label Content="{Binding Child.Name}"></Label>
            </StackPanel>
            <c:TestControl Value="{Binding Child}"/>
            <Button Name="btnChangeContext" Click="btnChangeContext_Click">Change DataContext</Button>
        </StackPanel>
    </Grid>
</Window>

public partial class ChildBindingTest : Window
    {
        public ChildBindingTest()
        {
            InitializeComponent();
            BindableClass obj = new BindableClass() { Name = "Person 1", Child = new BindableClass() { Name = "Child Person 1" } };
            this.DataContext = obj;
        }

        private void btnChangeContext_Click(object sender, RoutedEventArgs e)
        {
            BindableClass obj = null;
            if (((BindableClass)this.DataContext).Name == "Person 2")
                 obj = new BindableClass() { Name = "Person 1", Child = new BindableClass() { Name = "Child Person 1" } };
            else
                obj = new BindableClass() { Name = "Person 2", Child = new BindableClass() { Name = "Child Person 2" } };
            this.DataContext = obj;
        }
    }

    public class BindableClass : INotifyPropertyChanged
    {
        private BindableClass _Child;
        public BindableClass Child {
            get { return _Child; }
            set { _Child = value; OnPropertyChanged("Child"); }
        } 

        private string _Name;
        public string Name {
            get { return _Name; }
            set { _Name = value; OnPropertyChanged("Name"); }
        }

        public event PropertyChangedEventHandler PropertyChanged;

        private void OnPropertyChanged(string propName) {
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(propName));
        }
    }
<UserControl x:Class="WPFTest.TestControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <StackPanel Background="LightBlue" Orientation="Horizontal">
        <Label>Child Control:</Label><Label Content="{Binding Name}"></Label>
    </StackPanel>
</UserControl>

    public partial class TestControl : UserControl
    {
        public TestControl() {
            InitializeComponent();
        }

        public BindableClass Value {
            get { return (BindableClass)GetValue(ValueProperty); }
            set { SetValue(ValueProperty, value); }
        }

        public void SetValue(BindableClass value) {
            this.DataContext = value;
        }

        public static readonly DependencyProperty ValueProperty =
            DependencyProperty.Register("Value", 
            typeof(BindableClass), 
            typeof(TestControl), 
            new UIPropertyMetadata(null, ValueChanged));

        private static void ValueChanged(DependencyObject element, DependencyPropertyChangedEventArgs e)
        {
            if (e.NewValue != null) {
                TestControl owner = (TestControl)element;
                owner.SetValue(e.NewValue as BindableClass);
            }
        }
    }

PS:
Wechsle ich den Code im btnClick auf:

if (((BindableClass)this.DataContext).Name == "Person 1")
                ((BindableClass)this.DataContext).Child.Name = "Person 3";

dann geht die Änderung auch bis ins UserControl durch.

Thema: Warum ist Compare für versch. Typen unterschiedlich implementiert [war: Überfleißiger MS-Entwickler]
Am im Forum: Rund um die Programmierung

Ja klar, das hab ich dann ja auch gemacht, als ich gemerkt hatte, dass der short anders arbeitet.

PS: Mann könnte natürlich auch:
Comparer<int>.Default.Compare(Comparer<A>.Default.Compare(a,b),Comparer<B>.Default.Compare(c,d))

schreiben.

Thema: Warum ist Compare für versch. Typen unterschiedlich implementiert [war: Überfleißiger MS-Entwickler]
Am im Forum: Rund um die Programmierung

Zitat von herbivore
Mir scheint, du hast diesen Umstand einfach übersehen

Ja, das hab ich in dem Zusammenhang nicht bedacht, weil mir bis dato noch nie ein Comparer untergekommen ist der nicht -1, 0 oder 1 geliefert hat.
Zitat
und wolltest nun das dadurch für dich Unverständliche dem Entwickler anlasten, den wir hier aber eindeutig und nachdrücklich rehabilitieren müssen ...

Nein das wollt ich sicher nicht, es is halt einfach nur komisch, von einer Compare-Methode die bei x-Datentypen immer nur 3 verschiedene Ergebnisse liefert, auf einmal was anders zu bekommen.

if( Comparer<A>.Default.Compare(a,b) == Comparer<B>.Default(c,d))

funktioniert nämlich nur solange A und B kleiner als int sind bzw. A und B größer gleich int sind. Ist A int und B short funktioniert der Vergleich nicht mehr.

In diese Falle bin ich eben geraten. Mein Fehler

Thema: Warum ist Compare für versch. Typen unterschiedlich implementiert [war: Überfleißiger MS-Entwickler]
Am im Forum: Rund um die Programmierung

Zitat von herbivore
kannst du nochmal ganz laaangsam, ausführlich und zum Mitschreiben erklären, was dein Problem ist? Und was das ganze mit dem Titel zu tun hat?

vergiss es einfach und lösch den Thread. Ist nicht so angekommen wie ich dachte.

Thema: Warum ist Compare für versch. Typen unterschiedlich implementiert [war: Überfleißiger MS-Entwickler]
Am im Forum: Rund um die Programmierung

Klar is alles korrekt, ich finds nur komisch dass der Comparer je nach Typ unterschiedliche Ergebnisse liefert, einmal einfach nur 1 oder -1 und bei allem was kleiner als ein int ist, den genauen unterschied.

Thema: Warum ist Compare für versch. Typen unterschiedlich implementiert [war: Überfleißiger MS-Entwickler]
Am im Forum: Rund um die Programmierung

Zitat von dN!3L
Warum?

Hast wohl die Bilder in den Beiträgen ausgeschalten oder?

Thema: Warum ist Compare für versch. Typen unterschiedlich implementiert [war: Überfleißiger MS-Entwickler]
Am im Forum: Rund um die Programmierung

Na da war ja wohl jemand ganz übereifrig beim Entwickeln ;-)