Laden...
Avatar #avatar-3236.jpg
xxMUROxx myCSharp.de - Member
Student + Programmierer Südtirol/Italien Dabei seit 11.01.2010 1.552 Beiträge
Benutzerbeschreibung

Forenbeiträge von xxMUROxx Ingesamt 1.552 Beiträge

26.11.2012 - 18:47 Uhr

Hallo akunz,

du könntest eine COMPUTED COLUMN benutzen. Dabei kannst du dann noch zusätzlich entscheiden ob der Wert der berechneten Spalte in der Datenbank abgespeichert wird, oder bei Bedarf (sprich bei Abfragen auf dessen) neu berechnet wird. Dabei musst du aufpassen, dass nicht jede Berechnung in die Datenbank gespeichert werden kann. z.b. ein (GETDATE() + 1) geht nicht und würde auch keinen Sinn machen. Sprich: die Berechnung muss deterministisch sein, d.h. immer den selben Wert liefern um in der Datenbank gespeichert werden zu können. In deinem Fall ist dies so.

Gruß,
Michael

26.11.2012 - 11:21 Uhr

Hallo Tari1988,

nein, 64-bit Anwendungen laufen nur auf 64-Bit Systemen, jedoch kannst du in VS nach Any-CPU kompilieren. Dann läuft die Anwendung auf 32bit Rechner in 32bit und auf 64bit Rechner in 64bit.

Gruß,
Michael

25.11.2012 - 19:17 Uhr

Hallo crank,

  1. Bitte ich dich um die Einhaltung von 6.1 [Hinweis] Wie poste ich richtig?.

Es heisst ja "OnPropertyChanged", somit solltest du dies auch nur feuern, wenn dem so ist... Naja, das ist Geschmacksache, man kann es auch feuern wenn es sich nicht ändert, denn im Prinzip ist jede String Zuweisung auch eine Änderung, auch wenn man denselben String zuweist: [FAQ] Besonderheiten der String-Klasse (immutabler Referenztyp mit Wertsemantik)

  1. Zu deinem Fehler: Du erstellst 2x ein DemoViewModel, einmal im Constructor der DemoView, und einmal irgendwo anders. Da du zwei Instanzen hast und der Falschen den Wert zuweist, wirst du in der GUI auch keine Änderung erkennen. D.h. die Lösung ist, dass du jenem DemoViewModel den Namen zuweist welcher du als DataContext definierst.

Gruß,
Michael

15.11.2012 - 10:19 Uhr

Hallo Khalid,

danke, wusste ich selbst nicht dass es das gibt. Man kann aber nur die DefaultCollection verweden, oder?

Gruß,
Michael

15.11.2012 - 08:38 Uhr

zumal es ja für Nicht-Studenten auch nicht gerade billig ist

Seit TFS 2012 gibt es die Express Edition, welche gratis ist.

14.11.2012 - 22:39 Uhr

Wenn du einen TFS hast, so musst du falls dieser zuhause steht selbst dafür sorgen, dass die Datenbank regelmäßig gesichert wird. Sollte sie extern stehen wird das der Hoster für dich machen.
Für "Open Source" Projekte steht CodePlex zur Verfügung, bei dessen Dienst du dich auch an den TFS verbinden kannst.

Andernfalls ist wirkich wie pdelvo bereits sagte git auch eine gute Alternative, da man immer die gesamte Versionshistory offline hat, und auch ein und auschecken kann.

14.11.2012 - 20:11 Uhr

Hallo BlackMatrix,

Einfach und schnell Skydrive, Dropbox, ect.
Das richtige: Team Foundation Server (ich verwende dies auch alleine)
Wenn dies zu umständlich ist kannst du immer noch auf gratis SVN Hoster setzten.

Gruß,
Michael

05.11.2012 - 22:27 Uhr

Hallo Tobus,

da \ ein Steuerzeichen, " ein Identifier für Strings musst du beide Escapen. Dies machst du entweder mit \ oder du schreibs ein @ vor dem String.

Sprich:
Wenn du ein \ willst dann schreibst du \
Wenn du ein " willst dann schreibst du "
Wenn du es mit @ machst, dann schreibs du
string s = @"meinInhalt"
Demenstsprechend muss \ nicht mehr escaped werden, jedoch aber ", da " immer noch ein Identifier für Strings ist. Dies machst du dann mit doppelten "".

sprich, ich will den String ""\


//ungetestet:
//Variante1:
string s ="\"\\\"\\";
Variante2:
string s = @"""\""\";

Gruß,
Michael

28.10.2012 - 19:24 Uhr

Hallo theYoRecords,

Es wäre natürlich nicht schlecht wenn die Klasse von DependencyObject erbt...

genau das ist die Lösung.

Natürlich wäre es empfohlen, dass der Default Wert der DependencyProperty nicht ein int sondern ein bool sein.

Gruß,
Michael

22.10.2012 - 17:21 Uhr

oder Du brauchst (z.B. virtuelle) Initialisierungsmethoden ausserhalb des Konstruktors.

Dies kann ich nicht empfehlen, da die Fehlersuche dort, aus eigener Erfahrung sehr mühselig sein kann. D.h. man hat in den Kindsklassen nicht initialierte Eigenschaften die man vielleicht dort lesen möchte jedoch erst vom Kindsklassen-Konstruktor gesetzt werden. Dies ist verständlich, denn wenn der Base-Konstruktor die virtuelle Methode aufruft, so wird die Überschreibung in der Kindsklasse aufgerufen. Und dies in einem Moment, in dem der Kindsklassenkonstruktor noch nicht durchgelaufen ist.

Wenn virtuelle Methoden im Construktor aufgerufen werden, so sollen diese pure sein, d.h. keine Eigenschaften ändern. Auf jeden Fall versuche den virtuellen Aufruf zu vermeiden.

Gruß,
Michael

21.10.2012 - 21:00 Uhr

Hallo dahaack,

sieh dir mal das Entity Framework bzw nHibernate an. Deine Wünsche klingen sehr nach O/R-Mappers.

Gruß,
Michael

18.10.2012 - 17:19 Uhr

1 & 2: Weils es so von Microsoft programmiert wurde. Sieh dir mal die LanguageProperty im Quellcode an, dann siehst du folgendes, wobei Zeile 4 die ausschlaggebende ist.


static public readonly DependencyProperty LanguageProperty =
                    DependencyProperty.RegisterAttached("Language",
                    typeof(XmlLanguage),_typeofThis,new FrameworkPropertyMetadata( 
                    XmlLanguage.GetLanguage("en-US"),FrameworkPropertyMetadataOptions.Inherits |FrameworkPropertyMetadataOptions.AffectsMeasure));

Der Standardwert ist en-US

18.10.2012 - 15:02 Uhr

Hallo adeptus,

das ist da es in XAML standardmäßig so eingestellt ist. Dies kannst du sehr gut in den Metadaten der DependencyProperty LanguageProperty erkennen. Dadurch muss du für de-DE dieses Verhalten explizit umstellen.

Dies erreichst du indem du im Constructor des MainWindow folgende Zeile einfügst:

LanguageProperty.OverrideMetadata(typeof (FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage("de-DE")));

Gruß,
Michael

17.10.2012 - 14:43 Uhr

Ich würde schon DBNull.Value verwende, dass dafür ist es auch da.

17.10.2012 - 14:25 Uhr

Bei mir geht's.

Hier ein Beispiel für den SQL Server



using(var conn = new SqlConnection(sqlConnectionString))
{
    using(var comm = new SqlCommand())
    {
        comm.Connection = conn;
        comm.CommandText = "INSERT INTO test(Id,Test) Values (1,@test)";
        comm.Parameters.AddWithValue("@test", DBNull.Value);

        conn.Open();

        object executeScalar = comm.ExecuteNonQuery();
    }
}

17.10.2012 - 13:55 Uhr

Bin zwar nicht in Oracle bewandert, da ich bis jetzt nur MSSQL & PostgreSQL benutz habe, aber auch in Oracle wird es so sein dass Zero = 0 und NULL nicht dasselbe ist. Benutze DBNull.Value.

17.10.2012 - 13:22 Uhr

Hallo PSP_GIGA,

Wie machst du es zur Zeit. So kann man nur raten. Lies dir vorsorglich mal den Artikel [Artikelserie] SQL: Parameter von Befehlen durch.

Gruß,
Michael

16.10.2012 - 11:47 Uhr

Hallo,
wie wärs mit
SELECT RIGHT(DATEPART(YY,GETDATE()),2)
Gruß,
Michael

10.10.2012 - 20:48 Uhr

Hallo soda79,

ja indem du ICommands, DataBinding und MVVM benutzt.

Gruß,
Michael

08.10.2012 - 10:52 Uhr

Hallo Kr0e,

nein das ist kein Bug, sondern das Resultat von ReadKey. Dieser Methodenaufruf blockiert solange du kein Input bekommst. Da die Console blockiert ist, kann sie auch nichts ausgeben.

Gruß,
Michael

02.10.2012 - 15:52 Uhr

Hallo brave_snoopy,

nein dies ist nicht möglich, es sei denn dein WP7 ist als MassStorageDevice freigeschaltet, dann kannst du mit dem Explorer und somit mit C# auf die Daten zugreifen. Da ich es noch nie probiert habe weiß ich auch nicht ob es damit auch möglich ist, auf Bilder, Musik und Video zuzugreifen.
Wie man das WP7 in den Windows Explorer integriert findest zu zuhauf im Internet.

Evtl. würde wir uns hier freuen, wenn du diesbezüglich Rückmeldung geben kannst, ob man dann auf Bilder etc.. zugreifen kann.

Gruß,
Michael

29.09.2012 - 10:50 Uhr

Hallo briquet,

so eine Berechnung wird mit einem IValueConverter bewerkstelligt.

Gruß,
Michael

25.09.2012 - 19:41 Uhr

Hallo bammes,

Hier im Forum gibst einen Regex-Tester: On-the-fly Regex-Tester: Regex-Lab
Weiteres kann ich dir RegexBuddy empfehlen, dort kannst du den Regex debuggen, und dein Regex wird wortwörtlich "übersetzt".
Ich denke nicht dass du in deinem Regex allzu schnell den Fehler finden wirst. Versuch ihn mal langsam von links nach rechts aufzubauen, dann findest du den Fehler sicherlich.

Gruß,
Michael

24.09.2012 - 11:06 Uhr

Hallo scarpall,

du musst nicht andauernd prüfen ob der Editor läuft oder nicht. Mit ManagementEventWatcher bekommst du über die WMI Query Select * From Win32_ProcessStartTrace Benachrichtigungen über das EventArrived Event.

Hab auch einen Post im Internet gefunden welcher genau dieses Vorgehen etwas genauer beschreibt: Monitor when an exe is launched

Gruß,
Michael

20.09.2012 - 08:37 Uhr

Hallo MorphieX,

versuch mal: Tools=>Options=>Text Editor=>XAML=>Miscellaneous=>Auto Name Elements und dort die Checkbock deaktivieren.

Gruß,
Michael

17.09.2012 - 13:44 Uhr

Hallo morph3eus,

du bindest auch nicht richtig. Wenn du an eine Resource bindest, sollte es

ItemsSource="{Binding Source={StaticResource moviesDBViewSource}}"

heißen.
Weiters ist

 <my:MoviesDBDataSet1 x:Key="moviesDBDataSet1" />

und


 KursProjekt.MoviesDBDataSet1 moviesDBDataSet1 =

nicht dasselbe Object.
Generell gibt das Output Fenster von Visual Studio immer Informationen über fehlgeschlagene Bindings.

Sieh dir mal Tutorials zu Binding an, dazu findest du hundete im Netz. Weiteres versuche einfache Bindings zu erstellen und zu experimentieren. Versuche ein einfaches Beispiel, welches in den Tutorials beschrieben wird zu verstehen und baue es etwas um oder erweitere dieses, damit du auch siehst dass du es korrekt verstanden hast. Dann erst versuche kompliziertere Sachen in WPF zu erstellen. Vor allem in WPF ist es sehr wichtig die fundamentalen Sachen 100% verstanden zu haben.

Gruß,
Michael

14.09.2012 - 16:45 Uhr

Hast du in der ListBox auch ein ItemTemplate, denn sonst wird ToSting() aufgerufen, und ich denke nicht dass das dies bei NotifyPropertyChanged updated.

14.09.2012 - 15:40 Uhr

Ich denke wir reden einander vorbei.

Sieh DeinControl als geschlossene Box. Der kannst du nichts mehr mit Drag&Drop hinzufügen).

Jedoch kannst du DeinControl etwas hinzufügen, wenn du diese Box öffnest. Dies machst du indem du dessen XAML öffnest und dort jene Element hinzufügst welche du möchstest.

Aber du kannst nicht in DeinWindow welche die geschlossene "Box" DeinControl beinhaltet dort etwas hineingeben. Ein UserControl ist eben, wie ErfinderDesRades bereits gesagt hat eine geschlossene Einheit, die eigentlich nur zum Benutzen und nicht Designen (wie die Controls) vorgesehen ist.

14.09.2012 - 15:22 Uhr

Wie sieht dein Binding in der ListBox aus? Hast du etwas an dem Mode umgestellt? Sprich, OneTime, ect.

14.09.2012 - 12:01 Uhr

Hallo adeptus,

erbt dein Objekt von INotifyPropertyChanged?

Gruß,
Michael

14.09.2012 - 11:50 Uhr

Das ist weil dein "Control" immer als Ganzes gesehen wird. Dadurch ist es VS egal, ob du 100 controls in deinem Control hast oder nicht, er wird dir immer an die Grenzen des gesamten andocken.

Du kannst auch kein Icon in einen Button schieben.

14.09.2012 - 09:24 Uhr

Hast du es so in etwa:


<Window x:Klass="DeinWindow">
    <DeinUserControl/>
</Window>


<UserControl x:Klass="DeinUserControl">
    <!--CONTENT-->
</UserControl >

Dann ist es klar dass du in DeinWindow ins DeinUserControl (wessen Inhalt nicht dort definiert ist) nichts mehr reinschieben kannst. Das musst du dann schon in der XAML machen, in der du DeinUserControl definiert.

13.09.2012 - 16:54 Uhr

Hallo Floschi,

normal geht das über die Toolbox. Drag&Drop.
Oder du schreibst selbst XAML Code.
Und nein, du musst keine Property setzen. Es sei denn du meinst Grid.Column und Grid.Row um das Element falls mehrere Spalten und Reihen sind zu positionieren.

Gruß,
Michael

12.09.2012 - 21:31 Uhr

Hallo adeptus,

warum referenzierst du WinForms?
Binde an SystemParameters.PrimaryScreenWidth

Gruß,
Michael

11.09.2012 - 21:53 Uhr

Hallo,

64 Werte pro Sekunde zu schreiben ist sicherlich nicht der Flaschenhals. Du wirst sicherlich auch keine Probleme haben, wenn du anstelle eines Arrays "normale" Komplexe Klassen erstellst. Du kannst ja mal versuchen eine Million Objekte dieser Klasse zu instanziieren und zu messen wie lange dies dauert. Auf jeden Fall keine Sekunde. Dadurch kannst du dir das fehleranfällig Arbeiten mit den Arrays sparen.

Chilic jedoch sagt das einzig richtige: Mit anderen Worten: Das menschliche Auge nimmt Animationen schon ab 17Hz wahr. Also sind meiner Meinung eine Aktualisierung der GUI alle 50ms sinnvoll.

Gruß,
Michael

01.09.2012 - 19:59 Uhr

Hallo winSharp93,

LiveMesh wird beim Update auf Windows Essentials 2012 nicht mehr unterstützt, da es durch SkyDrive ersetzt wird.

Wie Abt habe auch ich mir eine Sysnology DS411+II angeschafft und synchronisiere meine Daten mit der Cloud Station. Diese ist dann entweder direkt über Portfreigabe oder über eine QuickConnect ID (eine Technologie von Synology) auch ohne möglich. Somit sind meine Daten synchron und nur ich habe die Daten. Dementsprechend bin auch ich für deren Sicherheit, sprich Verlust, verantwortlich.
Ich kann damit leben, dass eine Datei welche synchronisiert wird max. 5GB groß sein darf.

Gruß und schönes Wochenende,
Michael

31.08.2012 - 09:31 Uhr

Ich muss das Binding 2 mal definieren

Kein Problem, du kannst auch 2x an ein Command binden.

Der Shortcut wird nicht neben dem Menüheader angezeigt

Es muss kein Shortcut im Menü angezeigt werden damit das Binding funktioniert. Das Anzeigen des Shortcuts ist nur für den User hilfreich.

Und wie lagere ich die KeyBindings am sinnvollsten aus

Irgendwann musst du sie hardcoden. Um dies zu verhindern, kannst du die ShortCuts als Resource auslagern, damit du evtl. Anwendungsweite Shortcuts definieren kannst.
z.B.


<Grid.Resources>
    <Key x:Key="RefreshKey">F5</Key>
</Grid.Resources>
<Grid.InputBindings>
    <KeyBinding Key="{StaticResource RefreshKey}" Command="{Binding Path=CommandRefresh}" />
</Grid.InputBindings>


30.08.2012 - 08:52 Uhr

Hallo,

Ein Storyboard kann auch in XAML deklariert werden. Dann kann das StoryBoard im RoutedEvent Loaded gestarted werden. Genaueres findest du unter Übersicht über Animationen

Gruß,
Michael

29.08.2012 - 21:02 Uhr

Im ersten Beitrag steht nicht, dass es im Zusammenhang mit MVVM verwendet wird

Ich denke in WPF kann davon ausgegangen werden, dass minimales MVVM betrieben wird, da man ansonsten wieder bei derselben Technologie wie WinForms ist.

29.08.2012 - 20:38 Uhr

Hallo ajott,

pack dein Frame in ein Canvas, und animiere mit dem Storyboard die AttachedProperty Canvas.Left
Ein Storyboard kann auch in XAMl deklariert werden.

Gruß,
Michael

29.08.2012 - 19:12 Uhr

Hallo Ace86,

Unschön finde ich, dass man den Namen, der Eigenschaft als Zeichenkette angeben muss

Es gibt MVVM-Frameworks wie Cinch bei denen es über Lambda-Expressions geht. Damit fällt das Refaktorisieren leichter. Tools wie ReSharper sind jedoch auch in der Lage die Strings in OnChanged zu refaktorisieren.

Man könnte INotifyPropertyChanged einsetzen oder eine dependency property erstellen

DP können nur in Klassen eigesetzt werden welche von DependencyObject erben, da ansonsten GetValue und SetValue fehlen. Damit haben sie in einer ViewModel Klasse nichts verloren.

Bindings funktionieren nur an DependencyProperties.
Jedoch kann von allen public und/oder static Properties gebunden werden.

Gruß,
Michael

29.08.2012 - 09:27 Uhr

Hallo Tempelbauer,

was meinst du mit

aber RelayCommand unterstützt keine InputGestures, die ich aber brauche.

Dies geht doch mit


<Button>
    <Button.InputBindings>
        <KeyBinding Key="A" Modifiers="Control" Command=....></KeyBinding>
        <MouseBinding MouseAction="LeftDoubleClick"></MouseBinding>
    </Button.InputBindings>
</Button>

Gruß,
Michael

27.08.2012 - 19:54 Uhr

Hallo gentleben,

wenn du deine DataReceivedhandler Methode nicht statisch machst, kannst du auf die ListBox mit dessen Namen zugreifen.

Gruß,
Michael

27.08.2012 - 18:58 Uhr

Hallo MHI,

habs zwar noch nie probiert, aber mir kommt dein LDAP-String etwas komisch vor. Speziell der Teil nach LDAP und vor dem ersten CN. Dieser ist m.E. zu viel.
Sieh mal folgender Link: DirectoryEntry.Path

Gruß,
Michael

23.08.2012 - 15:28 Uhr

Hallo Gogeta,

Nein, es geht nicht und es gibt auch keinen Workaround. Wie du bereits sagst, müssen beide Typen der Fremdschlüssel identisch sein.
Warum möchtest du das?

Versuch mal folgendes:


USE tempdb

CREATE TABLE table1( id NVARCHAR(10) PRIMARY KEY)
CREATE TABLE table2( id NVARCHAR(255) PRIMARY KEY,  fk NVARCHAR(255) NOT NULL)

ALTER TABLE table2 ADD CONSTRAINT fk_table2_table1 FOREIGN KEY(fk) REFERENCES table1(id)

Gruß,
Michael

16.08.2012 - 20:04 Uhr

Hallo bredator,

soweit ich mich noch erinnern kann ist es auch möglich mit den Server Explorer von Visual Studio auch SQLCE Datenbanken zu öffnen und dessen Inhalt bearbeiten kann.
Auf jeden Fall funktioniert es mit dem "SQL Server Management Studio".

Gruß,
Michael

16.08.2012 - 13:30 Uhr

Hallo Mexxchen,

[...]Win-XP unterstützen sollen, können wir dort max. auf das FW4.0[...] Richtig, unter XP wird kein FW4.5 unterstützt.
Stellen wir nun im VS2012 das Zielframework auf 4.0 [...] führt dieses dann zwangsläufig zu Problemen unter XP?

Nein, denn wenn dein Zielframework 4.0 ist, wird für die mscorlib, ect auch die 4.0er hergenommen und diese funktionieren unter Windows XP.

Gruß,
Michael

16.08.2012 - 09:45 Uhr

Daher mein Vorschlag, dass du versuchst dich von einem anderen Rechner mit "SQL Server Management Studio" auf die Datenbank verbinden sollst. Damit wird dir auch ein Fehler mit zugehöriger Nummer angezeigt.

16.08.2012 - 09:23 Uhr

Hallo ecreators,

vielen Dank für deinen Einwand. Natürlich liese dies auch so machen wie du es vorgeschlagen hast. Mein Einwand dazu ist noch folgender:
Es könnte auch gewünscht sein dass wenn null übergeben wird, dass nicht false der zu nehmende Wert ist, sondern auch true. Dazu könnte man eine Eigenschaft bool ValueIfNull deklarieren oder den gewünschten Wert als parameter übergeben.

Gruß,
Michael