FP_05 schrieb:
Danke für eure Hilfestellung.
Ich habe die ID-Nummern jetzt vereinfacht (100001, 100002, usw). Damit kommt OrderBy() klar und sortiert alles korrekt.
Wir können immer noch nur Vermutungen anstellen. Das klingt auf mich nun z.B. so, als ob ID ein String wäre, in welchem ein Integer als String gespeichert ist. Wodurch es zwar korrekt sortiert hat, nur nicht so, wie du es erwartest
Grüssli
Hallo secondsun.
Danke für die Antwort. So gehts danke.
IsSynchronizedWithCurrentItem wird eigentlich schon benötigt. Kann sein dass der defaultwert bei der Combobox schon true ist.
Bei anderen Controls wie der Listview usw. muss man es aber setzen. Ich setzte es grundsätzlich.
Gruß
LOL: 3 Antworten - 3 verschiedene Klassen
Mir war nur wichtig, daß der OT nicht direkt mittels des StreamReaders zeichen- bzw. zeilenbasiert die XMl-Datei einliest, sondern eine für XML spezialisierte Klasse benutzt (ob nun XmlDocument, XmlReader oder XPath oder ...).
Verwende bei Schleifen, welche Arrays durchlaufen bei der Iterationsvariabel immer den Wert 0 bei der Initialisierung, da dies dem ersten Index im Array entspricht.
for(int i = 0; i < 100; i++){}
Könntest du denn auch näher erklären, warum deine Schleife so denn nicht korrekt ist? Fehlermeldung oder Fehlverhalten?
So?
ListBox[] listboxes = new ListBpx[8];
for(int i = 0; i < listboxes.Length; i++)
{
listboxes[i] = new ListBox();
for(int ii = 0; ii < 100; ii++)
{
listboxes[i].Add(ii);
}
}
//vergiss das Controls.AddRange(listboxes); nicht
43 ist ein Integerliteral und das gleiche wie (int)43.
Man möchte natürlich schreiben können
byte b = 43;
ohne jedesmal casten zu müssen:
byte b = (byte)43;
Das sollte es erklären.
Hallo Dravere
Etwas mehr Geduld wäre vielleicht angebracht
Ok. Ich versuchs :-). Nach 2-3 Stunden finde ich dann halt meistens selber eine Lösung. Wobei ich die Eingangsfrage ja schon am 08.04 gestellt habe.
Und in meiner ersten Frage habe ich dabei nicht mal auf die Behaviors von Expression Blend hingeweisen.
Aber:
Vielen Dank für deine Lösung. Ich werde das mal testen. Das mit den Attached Behavoirs war mir nicht klar dass man die so binden kann.
Hallo zusammen,
Einem ListViewItem Style mit gesetzter Template Property spendiere ich folgende Trigger:
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=(ListViewItem.IsSelected)}" Value="True">
<DataTrigger.Setters>
<Setter TargetName="TemplateParent" Property="Background" Value="LightGray" />
Der im Template enthaltene Border soll also bei IsSelected == true einen grauen Hintergrund annehmen.
Nun mache ich folgendes:
<EventTrigger RoutedEvent="DragEnter" SourceName="TemplateParent">
<EventTrigger.Actions>
<BeginStoryboard >
<Storyboard >
<ColorAnimation Storyboard.TargetName="TemplateParent" Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)"
To="Red" Duration="0:0:0.4" AutoReverse="False"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
<EventTrigger RoutedEvent="DragLeave" SourceName="TemplateParent" >
<EventTrigger.Actions>
<BeginStoryboard >
<Storyboard>
<ColorAnimation Storyboard.TargetName="TemplateParent" Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)"
To="White" Duration="0:0:1" AutoReverse="False" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
Soweit alles okay.
Ist ein Item nun Selektiert und der EventSetter "DragEnter" greift läuft alles wie gewollt. Beim greifen des "DragLeave" Setters wird die Border.Background Property logischerweise nach "White" animiert.
Wie muss ich vorgehen, dass ein selektiertes Item nach "LightGray" animiert wird - da ich die To Property der Animation ja scheinbar nicht binden kann ?!
Also.
Es funktioniert wie folgt:
Usercontrol
<TextBox Name="tb"
Text="{Binding Text,
ElementName=LabelTextBoxControl}"
Validation.ValidationAdornerSiteFor="{Binding ElementName=LabelTextBoxControl}">
Verwendung:
<MyUserControl Text={ValidationBinding Name>
Hier die Links dazu die geholfen haben:
http://stackoverflow.com/questions/1094509/wpf-define-bindings-default
http://msdn.microsoft.com/de-de/library/system.windows.controls.validation.validationadornersitefor(v=vs.100).aspx
xPaFFx schrieb:
Klar könnte ich per Holzhammermethode die Suite als eigene Anwendung realisieren die dann einfach entsprechend die anderen Exen bzw xls per Kommando aufruft.
Aber geht das irgendwie auch eleganter?
Was ist daran unelegant?
Du hast mehrere Programme und möchtest Die komfortabel per Knopfdruck starten. Hört sich nach 10 Minuten Aufwand an.
Vielleicht übersehe ich aber auch eine wichtige Anforderung und Du beschreibst nochmal genauer, wo das Problem liegt
Servus,
folgender Code:
ProcessStartInfo startInfo = new ProcessStartInfo("powershell.exe");
startInfo.Arguments = "\"C:\\Ordner 1\\script.ps1\"";
Die Powershell erkennt den Pfad durch das enthaltene Whitespace wohl als zwei Argumente:
Die Benennung "C:\Ordner" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausfhrbaren Programms erkannt.
Was tun?
EDIT: Habe eine entsprechende Anleitung gefunden:
http://forloveofsoftware.blogspot.de/2009/04/calling-powershell-script-in-path-with.html
http://www.vbusers.com/codecsharp/codeget.asp?ThreadID=71&PostID=1
Funktioniert allerdings nicht mit eMail-Clients die keine MAPI-Unterstützung mitbringen, dann ist man bzgl. Anhang aber ohnehin aufgeschmissen.
SmtpClient ist zwar recht einfach, hilft aber nicht weiter wenn die eMail über das eMail-Postfach des Nutzers rausgehen soll (sofern man sie ihn nicht nochmal im Programm irgendwo eintippen lässt)
Hier mal ein Beispiel zu einer Prozedur mit Übergabeparameter(Firebird)
CREATE PROCEDURE "DeineProzedur"(iId bigint not null)
returns (CollectionId bigint, CollectionFr bigint)
as
begin
FOR SELECT co.id,
cost.cFrance,
FROM tbl_collection co
JOIN tbl_collectionstatus cost ON cost.collectionstatus = co.collectionstatus
WHERE co.id = :iId
INTO :CollectionId,
:CollectionFr,
DO BEGIN
suspend;
END
END
Dein C# COde
public static List<Collection> GetCollectionInfo(int iId)
{
try
{
using (dbEntities ctx = new dbEntities())
{
return(ctx.ExecuteStoreQuery<Collection>("SELECT * FROM DeineProzedur(%1)").ToList();
}
}......
}
Verstanden?
Besten Dank, hab gestern noch eine alternative herausgefunden, diese wäre aber auch etwas aufwendiger. Ich könnte das eigentliche UserControl auch auf AutoScrollable setzen und das innere Panel händisch von der Größe neu Berechnen. Dies müsste ich halt jedes mal beim Verschieben von Controls machen. Damit wären die positionen Fix. Der Aufwand aber auch etwas höher.