Dann erstellt mir VS keine XAML datei 👶
Das ist korrekt, die musst du selber anlegen.
Stichwort: ResourceDictionary
@pinki: Ja es erbt wohl eine Content-Eigenschaft.
In deinem UserControl definierst du den kompletten Content, "von außen" überschreibst du ihn dann wieder. Deswegen geht es nicht.
Schau dir auch mal die Property "ContentTemplate" an.
Vermutlich ist das Problem, dass es ein "komplettes" UserControl ist.
Dass was du möchtest ist eher ein Custom Control:
https://blogs.msdn.microsoft.com/windowsappdev/2012/10/15/building-a-custom-control-using-xaml-and-c/
Bei Custom Controls trennt man quasi Code und XAML voneinander. Deine Klasse kann dann von einem ContentControl erben.
=)
Nimm als Basis ein ContentControl anstatt ein UserControl.
Siehe oben, du ziehst dir die Daten unterm Arsch weg.
Kannst du nochmal genau erklären, was du machen möchtest?
Du zeigst Daten aus einem Array im Grid an, bearbeitest sie dort und möchtest sie in das Array zurückschreiben, richtig? Dann ist doch die Anzeige schon korrekt?
Du änderst halt die Daten des Grids, während du noch in einem Event der aktuellen Daten hängst. Kann durchaus schon die Ursache sein.
Also dein Vorgehen ist irgendwie merkwürdig.
Was passiert, wenn du nur den Wert in der DataTable änderst?
Hä?
Du schreibst doch selbst:
#nullable enable public PersonEntity Person {get;set;} // Kann nicht null sein
D.h. es ist nicht nullable.
EDIT: einfacher und verständlicher wäre wohl ein ? für string und Co. gewesen.
Ja, also doch richtig verstanden.
Dann wäre "non-nullable" irgendwie logischer, schließlich kann es ja nicht null sein.
Okay, dann verstehe ich es nicht.
Warum darf name
dann eben nicht null sein?
#nullable enable
Für die öffentliche Klasse
Person
wurde das "nullable feature" explizit aktiviert*, somit könnte man meinen, dassname
eben nicht null sein darf.
Sowas verwirrt mich immer, das Feature heißt "nullable", wenn man es einschaltet aktiviert man aber eigtl. "non-nullable".
Wahrscheinlich verstehe ich wieder irgendwas nicht, aber für mich isses verdreht. 🤔
Kannst du die kaputte Solution zur Verfügung stellen?
Gerne auch abgespeckt, sodass nur 3 Projekte oder so in der Solution sind. =)
Du hast ein Projekt im VS erstellt und suchst jetzt die .exe-Datei, die das Projekt ausspuckt oder wie? 🤔
Moin,
entschuldigt bitte die verspätete Antwort, war die letzten Wochen kaum online.
Im Endeffekt ist es ja dann doch ziemlich einfach, man ist nur irgendwie immer zu verwöhnt von den ganzen Kurzschreibweisen. 👅
Also entweder so
<TabItem>
<TabItem.Visibility>
<Binding Path="MeineTolleProperty" Converter="{StaticResource meinTollerConverter}" />
</TabItem.Visibility>
</TabItem>
oder so
<TabItem>
<TabItem.Visibility>
<Binding Source="{MeineTolleMarkupExtension MeinTollerKonstrParam}" Converter="{StaticResource meinTollerConverter}" />
</TabItem.Visibility>
</TabItem>
Die Ausgangsfrage hat sich mittlerweile aber schon wieder erledigt bzw. die Anforderung hat sich geändert, sodass ich das Ganze aktuell doch nicht brauche.
Nichtsdestotrotz wieder etwas dazugelernt. 👍
Dann ist der Titel aber komplett falsch, das Downloaden funzt ja problemlos.
Und wenn der Quelltext nicht mehr hergibt, kann man da eher weniger machen, hat ja seine Gründe warum da nicht alles zu sehen ist (Stichwort: Sicherheit). Schau doch sonst mal, ob die Post bzw. DHL eine Api für deinen Anwendungsfall hat. Oder schaue nach einer App. =)
Wenn ich den Quelltext im Browser öffne, ist die Webseite auch nicht vollständig zu sehen.
Der Quelltext, den du im Browser siehst, passt also zum heruntergeladenen? Dann funktioniert das zumindest ohne Probleme.
Dass der Quellcode nicht alles zeigt, liegt an evtl. Skripten oder eingebundenen Dateien oder so (bin da kein Profi).
Es fühlt sich auch irgendwie falsch an, mit Werten aus dem MainWindow in der App.xaml.cs etwas zu machen. 🤔
Der Unterschied:
Der "Text" der TextBox ist eine DependencyProperty, die "Source" des WebBrowser eine einfache Property.
Dadurch bekommt das Binding die Änderung des Wertes nicht mit.
<TabItem Visibility={MeineTolleMarkupExtension MeinTollerKonstrParam, Converter={MeinTollerConverter}}
Das geht ja ohne Problem, habe das "Visibility" mal ergänzt.
Nur weiß ich eben nicht, wie ich es angebe, wenn ich es eben über
<TabItem>
<TabItem.Visibility>
???
</TabItem.Visibility>
</TabItem>
setzen muss.
Die MarkupExtension liefert ein bool zurück, entsprechend muss für die Visibility ein Converter dazwischen. 😉
Moin,
stehe derzeit vor einem (wahrscheinlich) kleinen Problem, zu dem mir partout keine Lösung einfällt (bzw. keine Schlagwörter für Google einfallen). 🤔
Normalerweise kann man über ein Bindung bzw. ein Markup (mit Konstruktorparameter) ja total einfach eine Visibility setzen:
<TabItem Visibility="{Binding MeineTolleProperty}"
<TabItem Visibility="{MeineTolleMarkupExtension MeinTollerKonstrParam}"
Nun benötige ich aber für das Binding/das Markup einen Converter, den ich in den Ressourcen des TabItem definiere, dadurch kann ich erst später im XAML die Visibility setzen:
<TabItem>
<TabItem.Visibility>
???
</TabItem.Visibility>
</TabItem>
Für ein Binding lässt sich die Stelle mit den "?" leicht füllen, wie aber macht man es bei einem Markup mit Konstruktorparametern? 🤔
Es kann also evtl. auch nötig sein, direkt die
> mitzuliefern.
Das "evtl." kann man doch streichen.
Wenn man dieses Format nutzt, gehört die packages.config zum Projekt (also ist in der Projektstruktur eingebunden), sonst weiß NuGet doch gar nicht welche Projekte es ziehen muss. =)
Du kannst ein Element ja an mehreren Seiten verankern, spiele damit mal rum. =)
Eine Fehlermeldung wird nicht ausgegeben.
Bei Binding-Problemen lohnt sich immer ein Blick in den Output, da findet man meistens Informationen.
Zum Problem: bin mir nicht 100%ig sicher, ob es überhaupt funktioniert, aber wenn dann am ehesten mit dem Schlagwort RelativeSource
.
Anscheinend machen ja die Telerik-Controls die Probleme.
Entweder du testet es mal mit normalen Controls oder du schaust dir evtl. das an: [Tutorial] Vertrackte Fehler durch Vergleich von echtem Projekt mit minimalem Testprojekt finden.
Im Standard scheint ja alles korrekt zu funktionieren.
schlecht(er als nötig) präsentieren: z.B. durch fehlende Dokumentation, veraltete / ungetestete Codes, ...
Nun ja, man sollte dann aber im Hinterkopf haben, dass da in der Regel 16-/17-jährige sitzen, wer denen das "vorhält" - nun ja... 😉
Bild mit "fehlerhaftem" Device.
Moin,
aus dem Visual Studio 2017 heraus lässt sich ja mittlerweile der Android Device Manager starten, der von Hause aus mitkommt (zumindest wenn man diese Sachen bei der Installation ausgewählt hat).
Nach dem Öffnen ist es problemlos möglich, ein Device anzulegen und auch zu starten. Siehe erstes Bild.
Schließe ich jetzt den Android Device Manager und starte ihn nochmal, kann ich das gerade eben angelegte und testweise gestartete Device nicht mehr starten, siehe Bild im nächsten Beitrag.
Er sagt beim Fehler "Datei 'config.ini' im AVD-Datenordner fehlt", diese wurde aber seit dem letzten Start nicht verschoben und ist noch immer da, siehe Ordner im ersten Bild.
Hat jemand eine Idee, woran es liegen könnte? 🙁
Also ein einfacher Test mit Textboxen (kein Telerik vorhanden) hat ergeben, dass das Ganze wunderbar funktioniert.
Wenn das Grid angezeigt wird, werden die Textboxen "angetabt", wenn das Grid unsichtbar geschaltet wird eben nicht (Visibility am Grid setzen, keine Ahnung was Grid_Visibility ist).
Ebenso funktioniert es, wenn einzelne Textboxen unsichtbar geschaltet werden.
Funktioniert es mit RadMaskedTextInput denn, wenn die Controls angezeigt werden? 🤔
Wahrscheinlich fehlt irgendwo eine Verknüpfung oder der Name der Region ist evtl. unvollständig?
Um auszuschließen, dass es an deiner Projektstruktur liegt, empfehle ich dir den Link:
[Tutorial] Vertrackte Fehler durch Vergleich von echtem Projekt mit minimalem Testprojekt finden
Ich persönlich würde dann eher aus der Top-Antwort den zweiten Teil nehmen und
ShutdownMode="OnMainWindowClose"
in der Application.xaml setzen.
Wenn ich es richtig überblicke: nein, geht nicht. =)
Wo schaltest du denn die Visibility für die beiden RadMaskedTextInput? 🤔
Ich kann dein Problem nach dem Mittag gerne mal testen.
Funktioniert denn dein Workaround nicht mehr? 🤔
Ansonsten stimme ich den anderen 3 aber auch zu. =)
Schaue dir mal mit dem [Artikel] Debugger: Wie verwende ich den von Visual Studio? an, von welchem Typ csvData
ist. =)
Der zweite C#-Code sollte so auch funktionieren, was kriegst du für einen Fehler?
Durch die 28k Zeilen des Build detailierten Outputs muss ich mich erstmal durchwühlen. Gibt es erfahrungsgemäß Schlagwörter, nach denen ich suchen könnte?
Das ist ganz einfach:
den Wert in den Options nochmal auf "Minimal" stellen
"Rebuild Solution" durchführen (damit ist sichergestellt, dass prinzipiell alles gebaut ist)
"Build Solution" durchführen
-> dadurch siehst du im Output welche Projekt in welcher Reihenfolge gebaut werden
-> für die weiteren Tests pickst du dir das Projekt an 1. Stelle heraus
den Wert in den Options auf "Detailed" stellen
für das Projekt, was du dir gemerkt hast, ein "Build" durchführen
-> dadurch ist der Output erheblich kleiner
-> und dann einfach oben anfangen zu lesen 😁
Genaue Stichpunkte gab es mMn nicht.
Es ist ein bissel Forschung, z.B. werden Projekte immer gebaut, wenn es Ressourcen gibt, die "Copy to Output directory: copy always" haben.
Edit sagt, ein mögliches Stichwort könnte "is not up to date" sein.
Wie schon von Th69 gesagt, normalerweise wird ohne Änderung kein neuer, kompletter Build gestartet.
Man kann über den Output herausfinden, warum ein Projekt gebaut wird. Dazu einfach temporär über Options - Projects and Solutions - Build and Run - MSBuild project build output verbosity die Ausgabe auf "Detailed" stellen - dann sollte man es sehen.
Wir hatten mal ein ähnliches Problem, bei dem die ganze Solution jedes Mal gebaut wurde, ohne Änderung am Code. Ich weiß nicht mehr genau woran es lag, kann aber sagen dass der Trigger dafür beim aller ersten Projekt der Solution zu finden war. Nachdem dieser (falsche) Trigger behoben wurde, wurde auch nur brav das gebaut, was sich geändert hat.
Hmm, okay. 😁
Ist mir tatsächlich bis vorgestern noch nie aufgefallen, vor allem die Schreibweise hat mich irritiert.
Aber gut zu wissen, dass es sowas gibt. 👍
Moin,
ich bin gestern über etwas gestolpert, zu dem ich im Netz zum Suchparamater "object initializer" leider nicht das Richtige finde.
Es geht um folgenden Code:
class Program
{
static void Main(string[] args)
{
var firstClass = new FirstClass
{
SecondClass =
{
MyString = "Test"
}
};
}
}
class FirstClass
{
public FirstClass()
{
SecondClass = new SecondClass(2);
}
public SecondClass SecondClass { get; set; }
}
class SecondClass
{
public SecondClass(int myInt)
{
MyInt = myInt;
MyString = "Zweite Klasse";
}
public string MyString { get; set; }
public int MyInt { get; set; }
}
Und dabei um diese Stelle:
var firstClass = new FirstClass
{
SecondClass =
{
MyString = "Test"
}
};
SecondClass wird in diesem Fall ja im Konstruktor der FirstClass instanziiert und danach wird noch der Wert "Test" zur Property MyString zugewiesen.
Wird die SecondClass im Konstruktor nicht instanziiert, knallt es natürlich.
Ich kenne natürlich die Objektinitialisierer, bei denen man z.B. sowas schreiben kann:
var firstClass = new FirstClass
{
SecondClass = new SecondClass
{
MyString = "Test"
}
};
Die obere Variante ist mir allerdings neu.
Hat jemand für diesen Syntaxzucker ein Schlagwort o.ä. bzw. kann jemand sagen wann das in C# implementiert wurde?
Es wäre ganz gut, wenn du z.B. auch die Verwendung der MarkupExtension hier nochmal zeigen würdest, also einfach alle notwendigen Infos. Keiner hat Lust sich die Infos aus einem anderen Beitrag rauszusuchen.
Bzgl. des Fehlers, evtl. kannst du das mal probieren:
[Tutorial] Vertrackte Fehler durch Vergleich von echtem Projekt mit minimalem Testprojekt finden
Wie sieht denn die MarkupExtension aus?
Der Converter muss Collapsed statt Hidden zurückgeben, für den Fall dass das Icon nicht angezeigt werden soll.
Ich glaube wir reden aneinander vorbei bzw. es kann auch sein, dass ich seinen Aufbau falsch verstehe. 😁
Er hat
a) eine View
b) ein ViewModel mit EditCommand
c) ein CustomControl
d) eine Basisklasse für das CustomControl mit DependencyProperty
Und die DP der Basisklasse soll standardmäßig an das EditCommand des ViewModel binden. Habe ich das soweit richtig verstanden?^^ 🤔
Das SetBinding
würdest du im CustomControl bzw. in der Basisklasse machen?
Das knallt ja spätestens dann, wenn das CustomControl auf eine View gepackt wird, die kein "EditCommand" hat.
Klärt mich mal auf. 👅
Wozu muss das Control die View kennen, es ist die View 😉
Dessen wäre ich mir nicht so sicher, zumindest hört es sich für mich nicht so an. 🤔
Für mich klingt es so, als wenn er ein Custom Control (mit DependencyProperty) hat, was er auf irgendeine View legt.
Und das Custom Control wiederum hat jetzt eine Basisklasse.
Das geht nicht, du weißt doch gar nicht auf welcher View das Control liegt und ob es in dem ViewModel dann so ein Command gibt. 😉
Was genau hast du vor?
Dein ViewModel erbt von deiner BaseClass, in dem sich die DependencyProperty befindet, sehe ich das richtig?
Als Nachtrag zu LaTinos Beitrag: in einer externen Bibliothek sah ich so ein #if-Konstrukt mal mit SILVERLIGHT
... gefühlt jede zweite Zeile. X(
Gib uns bitte mal ein paar mehr Informationen.
Wo bist du unterwegs? WPF? WinForms?
Was hast du schon versucht?
Das dürfte nicht gehen.
Was für einen Anwendungsfall hast du dafür?
Selbst wenn das Control standardmäßig ausgeblendet ist, möchte man doch beim Designen wissen wo es liegt, wenn es dann angezeigt wird, oder nicht? 🤔
Ja, oder du nutzt ein UniformGrid.
Ging leider nicht, obwohl es im anderen bereits implementiert war. 👶
Dann liegt was anderes im Argen.
Wenn das ViewModel, von dem du erbst, bereits INotifyPropertyChanged implementiert, dann braucht das andere ViewModel es nicht mehr implementieren.
Evtl. solltest du dir die Grundlagen nochmal in einem minimalen Testprojekt anschauen.
Ich zumindest bin bei deinen ganzen ViewModel_Extraröhrchen_RadGridView_View_View_Model_PiPaPo ausgestiegen... 😉