Seit VS 2015 gibt es rechts oben das suchfeld Quick Launch (mit CTRL Q). Dannach kannst du einfach Collapse eingeben und siehst welchen shortcut es dafür gibt: Siehe Anhang
Da hast du wahrscheinlich recht 😃
Ich bin der Meinung das die Abhandlung so sehr schlecht ist.
Wenn ich einen button Click handler mit einem "nicht Button Object" aufrufe darf gerne eine Exception kommen. Da die NullRefExceptions immer sehr nichtssagend sind würde ich wahrscheinlich eine ArgumentException mit message werfen.
Wenn der Programmcode in der Methode nur funktioniert wenn ich einen Button übergebe will ich eine Exception wenn ich die Methode falsch verwende ( eine die mir sagt was falsch ist). Wenn die Methode ohne Button Object im sender funktioniert brauch ich auch keine Warning Message Box.
Aus einem Programmierfehler eine klickbare MessageBox zu machen die der User am Ende einfach wegdrückt ohne sie zu lessen finde ich furchtbar. MessageBoxen mit einer Wahl sollten sowieso verboten sein 😉
Ich bin ein großer Fan von Single Window Applications, die dem App - Style folgen und immer nur eine Ansicht haben, dafür muss man sich etwas mehr mit dem Inhalt und vor allem mit der Navigation beschäftigen. Wir verwenden auch Caching damit Eingabefenster ohne bedenken während der Arbeit wieder verlassen werden können, usw.
Wir haben vor einem Jahr eine Software umgestellt von sehr vielen stackenden Fenstern auf ein einzelnes (haben ebenfalls auf WPF umgestellt btw). Selbst bei einem Experten Tool wie unserer Software kommt die änderung sehr gut an. Aber wie oben schon angedeutet ist das ganze etwas mehr aufwand.
PS: Wenn WPF auch möglich ist kannst du direkt ein TabControl verwenden und so umstylen das die Tab Header so aussehen wie du willst. (Geht bei WinForms auch ist aber immer deutlich mehr aufwand)
Wenn du alle Threads von deinem eigenen Prozess haben willst sollte:
System.Diagnostics.Process.GetCurrentProcess().Threads
reichen.
Ansonsten musst du alle beteiligten IPC Prozesse finden. (Mit Process.Get.... )
Wenn du ein custom Window haben willst würde ich erstmal http://mahapps.com/ versuchen um das gewünschte (oder alternativ einfach ein modernes) custom Window zu bekommen. Wenn man damit nicht zurecht kommt kann man bei Github den Sourcecode durchstöbern und das ganze selbst implementieren (so habe ich es auch gemacht).
P.S. Mit dem NonClient Area zeugst wird hier übrigens nichts gemacht. Würde ich auch nicht empfehlen.
Ableitung, oder ein Template.
Ich verstehe die Frage nicht ganz: Aus was besteht deine WPF anwendung? Pages oder Windows, Wenn ein teil der application immer gleich aussehen soll wäre es wahrscheinlich besser diesen teil nicht nur einmal zu definieren sondern auch nur einmal zu instanzieren und dann den teil der sich ändert durch ein UserControl oder eine Page zu Setzten. Oder mit hilfe von Frame und Page..
An ein ObservableDictionary.
Habe bereits eine lösung gefunden.
<DataGrid ItemsSource="{Binding ErrorRecords}" Background="Transparent" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding ErrorNumber}" >
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding DataContext.Language[ErrorNumber], RelativeSource={RelativeSource AncestorType=UserControl}}"/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
Warum die erste variante im OP nicht funktioniert hat weiß ich nicht.
Hallo Community,
Ich versuche gerade die Spalten Titel eines DataGrids an das ViewModel zu binden.
Jedoch funktioniert das ganze nicht richtig.
Nachdem Google sofort einige lösungen ausgespuckt hat, habe ich es noch immer nicht zum laufen bekommen. Hier mal die Lösungen die ich versucht habe:
<DataGrid ItemsSource="{Binding ErrorRecords}" Background="Transparent" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding ErrorNumber}" Header="{Binding Path=DataContext.Language[ErrorNumber], RelativeSource={RelativeSource FindAncestor, AncestorType=UserControl}}"/>
<DataGridTextColumn Binding="{Binding LastOccurance}" Header="{Binding Path=Language[LastOccurence]}"/>
<DataGridTextColumn Binding="{Binding ErrorCode}" Header="{Binding Path=DataContext.Language[ErrorCode],ElementName=LayoutRoot}"/>
<DataGridTextColumn Binding="{Binding ErrorMessage}" Header="{Binding DataContext.Language[ErrorMessage], Source={StaticResource Proxy}}" />
</DataGrid.Columns>
</DataGrid>
Und die Binding Errors:> Fehlermeldung:
System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:Path=Language[LastOccurence]; DataItem=null; target element is 'DataGridTextColumn' (HashCode=44175353); target property is 'Header' (type 'Object')
System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:Path=DataContext.Language[ErrorCode]; DataItem=null; target element is 'DataGridTextColumn' (HashCode=36366333); target property is 'Header' (type 'Object')
System.Windows.Data Error: 3 : Cannot find element that provides DataContext. BindingExpression:(no path); DataItem=null; target element is 'FrameworkElement' (Name=''); target property is 'DataContext' (type 'Object')
Wie bekomme ich das Binding hin?
Hallo Community,
Ich habe eine ListBox welche Punkte anzeigt und verschieben lässt.
<DataTemplate DataType="{x:Type local:Node}">
<Thumb DragDelta="Thumb_DragDelta">
<Thumb.Template>
<ControlTemplate>
<Ellipse Margin="-10,-10,10,10" Height="20" Width="20" Stroke="Black" StrokeThickness="1" Fill="#5FFFFFFF" x:Name="Node" />
</ControlTemplate>
</Thumb.Template>
</Thumb>
</DataTemplate>
und im DragDelta:
Thumb thumb = sender as Thumb;
if (thumb == null) return;
Node node = thumb.DataContext as Node;
if (node == null) return;
node.Move(e);
Das ganze funktioniert wie gewünscht.
Jedoch nur mit der Maus, wie kann ich einem Thumb ebenfalls auf Touch events reagieren oder muss ich mir hier mit Manipulation alles selber implementieren ?
Vielleicht hat jemand damit erfahrung?
mfg Console