Nein nein, muss es natürlich nicht. Ich habe denoch einen anderen Weg über einen Multiconverter gewählt.
Trotzdem würde mich interessieren warum das so ist, da der ItemContainerGenerator noch recht neu für mich ist.
y-vonne schrieb:
Ich dachte halt wenn das Key Objekt ausserhalb der dictionary nicht mehr verwendet wird kann es gelöscht werden.
Meine Intention war allerdings dass der Eintrag dann komplett aus der Dictionray verschwindet. Und dachte nicht daran dass nur die Reference auf null geht
Das wäre zwar über einen Finalizer möglich, aber nicht zu empfehlen. Du solltest lieber das Design deiner Applikation überdenken.
In C# räumt der GC für einem zwar den Speicher auf, aber man muss trotzdem selber die Objekte aufräumen. Daran kommt man nicht vorbei.
Grüssli
LordTerra schrieb:
und lernen geht halt auf verschiedene arten ...
ich persönlich lerne schneller wenn ich beispiele bekomm die ich testen kann und wenn ich was nicht versteh gleich nachfragen kann was ich falsch gemacht hab ...
das geht eben nicht wenn man bücher oder msdn liest ..
Doch geht es! Ich lerne genau gleich und wahrscheinlich viele hier auch. Du liest die MSDN und das Buch. An beiden Stellen findest du sehr wahrscheinlich bereits Beispiele. Ein Fachbuch ohne Beispiele kann man gleich in die Mülltonne werfen. Und die MSDN ist voll damit!
Falls es in der MSDN trotzdem mal keines hätte, dann hast du zumindest die wichtigen Fachbegriffe. Danach kannst du suchen und dann spätestens findest du wieder Beispiele. Wichtige Seiten für die Suche:
stackoverflow.com (ist in der MSDN Suche enthalten)
codeplex.com
codeproject.com
codeguru.com
Und dann natürlich auch die Suche in den verschiedenen Foren, wie hier, auf MyCSharp oder anderswo.
Und ich kann dir versichern, du wirst damit deutlich schneller sein, wenn du dieses Suchen mal beherrscht. Und kommst auch zu deinen Antworten, wenn alle anderen nicht anwesend sind. Schau nur mal, wie lange es benötigt hat, bis du die Antwort auf diese Frage hattest. Und das ist normal in Foren. Da kann es ruhig mal ein paar Stunden gehen, bis man die richtige hat. Unter Umständen erhält man auch gar nie die "richtige".
Grüssli
In Pseudo-Code sollte folgendes helfen:
foreach Childnode in Node.Nodes
lChild.Add(Childnode);
Zu beachten ist, das die Childnodes den selben Typen haben wie deine selektierte Node.
Hallo Leute,
ich suche ein Snippet für den Chart (MS Visual Studio 2010).
Und zwar möchte ich mit dem Mauskursor über einen Datenpunkt im Chart drüberfahren, und die Daten des Datenpunktes, der sich unter dem Kursor befindet, einblenden.
Hat jemand von euch so ein Codebeispiel schon mal gesehen?
Vielen Dank im Voraus.
Ich habe es gefunden, bei der RichTextBox gibt es eine Eigenschaft namens SelectedFont. Damit kann man die Abmessungen eines Zeichens an einer Position berechnen.
Hattest du nicht mal nach Bindingfehlern im Visual Studio Output geschaut?
Dann hättest du früher gemerkt das du den DataContext durch das Binding überschrieben hast, dadurch sucht er den FooCommand nicht im DataContext des Parents.
Das Problem kannst du nur umgehen indem du im UserControl den DataContext _nicht_ setzt.
Da es eh nicht MVVM ist kannst du dich im Code direkt an den Click hängen.
<Window...>
...
<Button Command="{Binding FooCommand}" ...>
...
</Window>
<Window...>
...
<ctrl:MeinControl Command="{Binding FooCommand}" ...>
...
</Window>
//...
public partial class MyControl
{
//...
public MyControl()
{
InitializeComponent();
FooButton.Click += HandleFooButtonClick;
}
private void HandleFooButtonClick(object sender, RoutedEventArgs e)
{
if (Command != null)
Command.Execute(null);
}
public static readonly DependencyProperty CommandProperty =
DependencyProperty.Register("Command", typeof(ICommand), typeof(MyControl));
public ICommand Command
{
get { return (ICommand)this.GetValue(CommandProperty); }
set { this.SetValue(CommandProperty, value); }
}
//...
}
<UserControl x:Class="...MyControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
...
<Button Command="{Binding Path=Command}" .../>
</UserControl>
Hallo zusammen,
Kennt hier jemand zufälligerweise eine Implementation ähnlich zu SortedDictionary , heisst also einen Baum, welche auch Bereichsabfragen erlaubt? So dass man zum Beispiel ein DateTime als Key hat und dann eine Abfrage über eine bestimmte Zeit machen kann.
Gefunden habe ich bisher:
http://kwdata.codeplex.com/
Leider scheint dies recht neu zu sein und hatte noch nicht sehr viele Downloads. Ich wäre lieber an etwas interessiert, welches bereits schon durch mehr Leute getestet wurde.
Danke!
Grüssli
Du hast nicht ganz das verstanden was ich rüberbringen wollte. Ich habe nicht davon geredet, dass der User als Admin unterwegs ist. Im Normalfall halt mit dem einfachen Benutzeraccount und per UAC dann bei notwendigen Aktionen wie z.B. bei Installationen, als Admin.
Du sagst es ja selber
Er kann nur in dem User-Verzeichnis schaden einrichten.
Und genau darum gehts mir ja. Du sagst, dass du im Userverzeichnis deine Programme packen willst, und damit sind sie für jeden Schädling den der User sich anschleppt, gefundenes Futter. Auch wenn er nur unter dem normalen Benutzeraccount unterwegs ist. Werden sie dagegen ordnungsgemäß ins Programmverzeichnis installiert, sind sie durch die UAC geschützt weil der Standarduser dort keinen Schreibzugriff hat. Das für die Installation temporäre Administrationsrechte notwendig sind, stimmt natürlich. Wenn man jetzt aber die Wahl hat zwischen der Gefahr beim Installationszeitpunkt(der einmalig ist und die sich minimieren lässt mit Sicherheitssoftware, Programme nur aus vertrauenswürdigen Quellen etc.) oder andererseits die dauerhafte Gefahr durch alles im Userverzeichnis(was jederzeit beliebig manipulierbar ist, da keine Zugriffskontrolle), dann halte ich die ordentliche Installation für wesentlich sinnvoller.
Aufgabenplanung? Ist das der Task Scheduler? *keine deutschsprachige Windowsversion hat*
Für den Task Scheduler gibt es recht viele Einträge im Internet. Nur vielleicht mal so drei:
Task Scheduler COM Interface (kann man direkt in C# verwenden)
Codeproject Artikel über die Verwendung des Task Schedulers in C#
Bibliothek für Task Scheduling auf Codeplex
Grüssli
Q schrieb:
Evtl. ist es sinnvoller, das jetzt einfach durch eine methode vonm levelobjekt zu lösen wie z.B. RemoveActor, dann brauchen die spielobjekte selbst das gar nicht im interface haben.
Ja. Definitiv. Zumindest so wie du es hier beschreibst.
Grüssli
µ schrieb:
Aber Du willst umgekehrt einen LINQ-Ausdruck auf eine ArrayList anwenden, oder?
Dann verwende einfach .OfType<>()
ArrayList a = new ArrayList(Enumerable.Range(0, 10).ToArray());
var x = a.OfType<int>().Where(i => i > 5);
Oder .Cast<>()
OfType filtert, d.h. Objekte die sich nicht casten lassen kommen nicht in die Ausgabe; Cast würde in dem Fall eine Exception werfen. Letzteres scheint mir das natürliche Verhalten zu sein, also würde ich OfType nur benutzen, wenn ich das genau so haben will.
Hash:
Blöd nur, dass danach jeder etwas anderes in die config-Datei eintragen kann.
Trotz Obfuscator dürfte man den Code, der aus Username und Passwort den Hashstring baut, recht schnell finden und so kann man sich seinen eigenen generieren und in die config eintrage.
Verschlüsseln:
Wenn mit mitteln aus dem Cryptography-Namespace verschlüsselt wird findet man den Code sowieso schnell. Dazu steht das Passwort wahrscheinlich direkt im Code.
Das ist alles nur scheinbare Sicherheit. Das ganze Konzept ist absurd: Jemand hat lokalen Vollzugriff auf einen PC, muss sich aber in einer Software einloggen.
Aber genau auf den gleichen Unsinn besteht gerade ein Kunde von mir. Tja, dann kriegt er auch was er haben will
Also dann wäre mein Vorschlag Du leitest von der WrapPanel-Klasse ab und erweiterst die um die Bottom-Margin-Funktionalität. Könntest ja prüfen ob es sowas wie "IsWrapping" gibt und dann die Children darunter auf den entsprechenden Bottom-Margin setzen.
Ich weiß, ist ne Fummelei, denke aber mit einer abgeleiteten Klasse sollte sowas durchaus möglich sein.
Erledigt.
Gute Frage, ich habe nämlich direkt mit geschätzten 3000 Zeilen Quellkode angefangen, die ich nun vor mir liegen habe. Sprich: Nicht Alles davon ist von mir.
Das Problem scheine ich aber umgangen zu haben - Hatte wohl falsche Werte übernommen bzw. die Überladung der Methode verwendet. Die Verbindung scheint über einen "sqlhelper" zu laufen.
Habe jetzt aber ein anderes Problem:
Mit UPDATE wollte ich den Datensatz aktualisieren. Das funktioniert soweit auch. Nur wird neben dem geänderten Datensatz ein neuer als Duplikat eingefügt - Ganz an Ende der Tabelle. Nehme ich die entsprechende Anweisung (DataTable dt) raus, wird gar kein Datensatz mehr geändert oder eingefügt.
private static string SQL_Update_Artikel = @"
UPDATE
artikel_db
SET
ArtikelNummer = @artikelNummer,
ArtikelBezeichnung = @artikelBezeichnung,
Preis = @preis
WHERE
ID = @ID
";
public static tbl_Artikel Bearbeiten_Artikel(tbl_Artikel update_Artikel)
{
IDictionary<string, object> parameters = new Dictionary<string, object>();
parameters.Add("@preis", update_Artikel.Preis);
parameters.Add("@artikelNummer", update_Artikel.ArtikelNummer);
parameters.Add("@artikelBezeichnung", update_Artikel.ArtikelBezeichnung);
parameters.Add("@ID", update_Artikel.Id);
DataTable dt = SqlVerbindung.sqlHelper.ExecuteDataTable(SQL_Update_Artikel, parameters);
// ConvertToArtikel(DataTable dt);
tbl_Artikel artikel = null;
return artikel;
}