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;
}
Hallo, ok, folgende Errors im Ausgabefeld beim scrollen des DataGrids:
System.Windows.Data Error: 40 : BindingExpression path error: 'PAUF_2017-8' property not found on 'object' ''DataRowView' (HashCode=41105570)'. BindingExpression:Path=PAUF_2017-8 ; DataItem='DataRowView' (HashCode=41105570); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')
Ich habe ein laaanges SQL-Statement, welches ich über den SqlDataReader einlese.
Diesen tue ich dann in ein DataTable:
dbReader = dbCommand.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dbReader);
und die DataTable dann in das DataGrid:
dG_erg_table.ItemsSource = dt.DefaultView;
Edit:
Die Spalte PAUF_2017-8 wird im DataGrid nicht angezeigt. Aber wenn ich meine Abfrage, mit dem gleichen SQL-Statement, über SQL Server Management Studio Express tätige, wird diese Spalte mit Inhalt gefüllt. Aber nicht immer, manchmal auch mit NULL. Liegt da vielleicht das Problem mit dem DataGrid?
Dravere schrieb:
Firefighter schrieb:
Na klar, abwickeln.
Firefighter als Namen. Verwendet abfackeln statt abwickeln. Der nächste Feuerteufel-Feuerwehrmann?
Grüssli
PS: Ist mein Thread, ich darf Off-Topic sein :p
LOOOL du hast mich erwischt :D:D
Dravere schrieb:
Doug_HH schrieb:
Den Code abzuarbeiten, setzt das Starten der Form voraus!
Seit wann denn das? Der Start ist immer bei der Main-Funktion! Bei einer WinForms Anwendung hast du noch eine Main-Funktion explizit im Code. Bei WPF wird sie vom Kompiler generiert.
Grüssli
Ja stimmt, bin etwas durch den Wind
Hatte das so verstanden, dass er den Code in die Form implementieren sollte.
Ja, ich habe den Artikel nicht ganz verstanden, sonst wäre ich ja nicht hier
@Dravere: Danke! Ich wusste gar nicht dass hier ein Unterschied zwischen Task und void besteht...
Ja, ich denke das ist mein Problem.
Da ich die ausgewählte KatalogInfo für andere Zwecke in einer weiteren DepProp stehen hatte, nutze ich jetzt einfach das Property_Changed Event:
private static void loadedKatalog_PropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
if (e.NewValue != null) ((FragenEditor)d).DGFachbereichCombo.ItemsSource = (e.NewValue as FragenkatalogInfo).VorhandeneFachbereiche;
}
Danke für deinen Tip
Und sind es jetzt immer noch:
1. es reicht nur die ungeraden Zahlen zu testen (außer explizit einmal am Anfang mit der 2)
2. Sqrt(n) sollte die Abbruchbedingung sein (diese aber nur einmalig errechnen lassen!)
3. Und noch effizienter geht es mittels der Formel: p = 6k+1 oder p = 6k-1, s.a. http://de.wikipedia.org/wiki/Primzahl#Eigenschaften_von_Primzahlen
WinForms, hat sich aber erledigt. Scheinbar wurde der Wert irgendwo anders wieder überschrieben.
luker: Wenn man die Buttons manuell anwählt, ist das der Fall. Allerdings können scheinbar durch das Programm auch bewusst - so unsinnig das auch sein mag - mehrere Radios selektiert werden.