Hallo,
ich hatte mal eine XML Datei im Programm eingebunden. Diese gab Hilfestellung (per IntelliSence) bei der manuellen Eingabe von XML Daten. Doch weiß ich nicht mehr wie ich das gemacht habe.
Weiß jemand, wie ich der XML Datei sage, nach welchen Schema die Daten eingegeben sind?
Gruß Tala
Dazu muss man den Style der TabControl veraendern. Ich habe kurz ein Beispiel erstellt, indem eine TabControl einen Button mit dem Content "X" erhaelt. Dieser Button befindet sich durch die Width-Angaben im Grid ("*" und "Auto") ganz rechts aussen:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="TabControlTest.Window1"
x:Name="Window"
Title="Window1"
Width="640" Height="480"><Window.Resources>
<SolidColorBrush x:Key="TabControlNormalBorderBrush" Color="#919B9C"/>
<LinearGradientBrush x:Key="TabControlPaneTopNormalBackground" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFFCFCFE" Offset="0"/>
<GradientStop Color="#FFF4F3EE" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="TabControlPaneBottomNormalBackground" EndPoint="0,0" StartPoint="0,1">
<GradientStop Color="#FFFCFCFE" Offset="0"/>
<GradientStop Color="#FFF4F3EE" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="TabControlPaneLeftNormalBackground" EndPoint="1,0" StartPoint="0,0">
<GradientStop Color="#FFFCFCFE" Offset="0"/>
<GradientStop Color="#FFF4F3EE" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="TabControlPaneRightNormalBackground" EndPoint="0,0" StartPoint="1,0">
<GradientStop Color="#FFFCFCFE" Offset="0"/>
<GradientStop Color="#FFF4F3EE" Offset="1"/>
</LinearGradientBrush>
<Style x:Key="TabControlStyle1" TargetType="{x:Type TabControl}">
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<Setter Property="Padding" Value="4,4,4,4"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="BorderBrush" Value="{StaticResource TabControlNormalBorderBrush}"/>
<Setter Property="Background" Value="{StaticResource TabControlPaneTopNormalBackground}"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabControl}">
<Grid ClipToBounds="true" SnapsToDevicePixels="true" KeyboardNavigation.TabNavigation="Local">
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="ColumnDefinition0"/>
<ColumnDefinition x:Name="ColumnDefinition1" Width="0"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition x:Name="RowDefinition0" Height="Auto"/>
<RowDefinition x:Name="RowDefinition1" Height="*"/>
</Grid.RowDefinitions>
:::<Grid x:Name="LayoutRoot">
<TabControl Margin="28,40,34,52" Style="{DynamicResource TabControlStyle1}" IsSynchronizedWithCurrentItem="True">
<TabItem Header="TabItem">
<Grid/>
</TabItem>
<TabItem Header="TabItem">
<Grid/>
</TabItem>
</TabControl>
</Grid>
</Window>
Danke dir, das wollte ich. Auch wenn ich noch nicht genau weiß, was du da alles tust, klappt es. So nu guck ich mal, was du da mit den Code alles machst 👅
Wie kann man das Tabcontrol so verändern, das man wie bei Visusal 2008 neben den TabHeadern rechts zwei Button hat (in Visual 2008 der Button mit den Contextmenu mit allen Tabs und des CloseButton). Ich finde keine entsprechnede Eigenschaft.
Auch mit diesen Beispiel komme ich nicht weiter 😦. Effekt ist immer noch der gleiche.
Ohne Itemtemplate kann ich nicht für Header, Tooltip usw seperate Eigenschaften setzen. Textbox ist auch keine lösung, da ich nicht das MenuItem selbst modifiziere, sondern seinen Inhalt.
Das Problem an diesen Code:Bindung/Template scheint mir, das es nicht das Element, sondern seinen Content modifiziert. Ergo packt er in ein erzeugtes MenuItem ein neues MenuItem hinein. Aber ich finde nirgends eine Lösung, wie man den Kontent direkt modifizieren kann.
Hier das Problem. Es wird ein MenuItem INNERHALB eines Menuitems erzeugt, dabei möchtei ch einfach nur den Menuitems die werte an der richten stelle zu ordnen.
Ich möchte gern über eine Datenbindung mein Menu erzeugen. So weit, funktioniert das auch, aber leider wo wie ich bis jetzt mache, packt er mir ein MenuItem in ein MenuItem
<MenuItem Header="Tools" Click="TestClick" ItemTemplate="{StaticResource MenuItems}" >
<MenuItem.ItemsSource>
<Binding Source="{StaticResource Tools}" XPath="tools/tool[@Type='Admin']" />
</MenuItem.ItemsSource>
</MenuItem>
Recource
<DataTemplate x:Key="MenuItems" DataType="x:MenuItem">
<MenuItem Header="{Binding XPath=@Name}" ToolTip="{Binding XPath=@Tooltip}"/>
</DataTemplate>
Eigendlich sollte es doch ganz einfach sein, aber ich komme nicht drauf.
Wie kann ich u.g. Binden, so das nicht im jeden Item "@Seite" bzw "@Description" abgelegt wird, sondern die Werte aus der Datenbindung?
<MenuItem Header="Spieler" DisplayMemberPath="@Name" ToolTip="@Description" Tag="@Seite" Click="ToolClick" >
<MenuItem.ItemsSource>
<Binding Source="{StaticResource Tools}" XPath="tools/tool[@Type='Spieler']" />
</MenuItem.ItemsSource>
</MenuItem>
Möglichkeit gefunden:
ContentFrame.Navigate(new Uri("Pages/Page2.xaml", UriKind.Relative));
Hallo,
per WPF ist das ja Simpel
<Frame Name="ContentFrame" Source="Pages/Page1.xaml" NavigationUIVisibility="Hidden"/>
Doch wie kann ich dies Source per C# setzen? Ich finde nirgends einen weg, wie man das machen kann. Zu einer Internetseite zu Navigieren wird über gezeigt, aber wie kann ich genau den Code oben nachbilden?
Fehler gefunden. Der Fehler lag nicht in der XML sondern in der CodeDatei.
Hallo,
ich generiere mein Menu aus einer XML Datei. Das funktioniert jetzt auch gut, aber ich kann kein Click-Event hinzufügen. Was natürlich sehr unschön ist.
<Menu DockPanel.Dock="Top" Height="22" Name="Menu1" VerticalAlignment="Top" >
<MenuItem Header="Spieler" DisplayMemberPath="@Name" Tag="@Seite" ToolTip="@Description">
<MenuItem.ItemsSource>
<Binding Source="{StaticResource Tools}" XPath="tools/tool[@Type='Spieler']" />
</MenuItem.ItemsSource>
</MenuItem>
</Menu>
Wenn ich diesen Menuitem ein ClickEvent hinzufügen möchte, dann kommt diese Fehlermeldung
Zum Generieren eines Ereignishandlers muss die Hauptfenster-Klasse, die mit dem x:Class-Attribut oder x:Subclass-Attribut angeben wird, die erste Klasse in der Datei sein. Verschieben sie den Klassencode an die ersten Position in der Datei, und wiederholen sie den Vorgang.
(Ja und der Gramatikfehler ist auch so drin).
Danke. Genau das Fehlte mir. Ich habe die "Vorauswahl" in der Onlinehilfe nicht gefunden.
Hallo, ich möchte gern mein Menu aus einer XML Datei heraus erzeugen. Klappt schon, aber da ich das Menu "gestaffelt" aufbauen will, also MenuItems innerhalb von "adim", "user", "moderator" erstellen will.
Dafür ist wohl die DatenValidierung da. Doch diese wird scheinbar gar nicht angesprochen
Geprüft werden soll der der wert Type. In diesen falle soll er den ausdruck Admin haben. Das Menuitem soll den Namen Name tragen (klappt alles so weit, aber es wird einfach keine Validierung durchgeführt. Warum nicht?
<MenuItem Header="Admin" Name="Tools" DisplayMemberPath="@Name">
<MenuItem.ItemsSource>
<Binding Source="{StaticResource tools}" XPath="tools/tool">
<Binding.ValidationRules>
<local:TypeRule Type="@Type" mustBe="admin" />
</Binding.ValidationRules>
</Binding>
</MenuItem.ItemsSource>
</MenuItem>
Wenn ich mein DataTable über GetChanges abrufe, und KEINE Änderung vorliegt, erhalte ich immer die Fehlermeldung, das der Objectverweis nicht auf eine Instanz liegt. Wie kann ich das verhindern?
DataTable ChangeTable = new DataTable();
ChangeTable = Datenbank.Tagebuch.GetChanges();
MessageBox.Show(ChangeTable.Rows.Count.ToString());
Eigendlich möchte ich nur feststellen ob speziell in dieser Tabelle Änderungen vorliegen? (das DataSet beinhaltet weitere, die aber nicht überprüft werden sollen).
Hallo, ich glaub ich bin zu verwöhnt von Windows-Forms...
In den Forms gab es ja die Möglichkeit, zu überprüfen ob ein Fenster geschlossen wird. Closed-Ereignis. Dies ist vor allem bei MDI´s ideal, um noch den Nutzer eine letzte Chance zu geben, nicht gespeicherte Daten ab zu speichern.
In WPF gibt es kein MDI mehr. Ich nutze statt dessen jetzt ein TabControl um die verschiednen Fenster zu simulieren und darin UserControls um den Code zu trennen und wiederverwertbar zu halten.
Mein Problem ist nun, das ich in meinen "Fenstern" UserControls Datenbindungen an Datentabellen habe.
Gruß Marco
Und wie gebe ich nun ein Modul in C# an?
Und wofür steht IL 🤔?
Es ist richtig. Das ist Code von VB.Net. Mir fehlt einfach die typisierungsbefehl. In VB.Net hat man eben jene "Klasse" mit Modul eingeleitet. Wie kann ich das in C# machen. Immerhin muß dies möglich sein, da ja auch verschiedene Namespaces Funktionen zur verfügung stellen, die nicht an eine Klasse gekoppelt sind bzw über diese Aufgerufen werden.
Das geht zwar schon in die richtige Richtung, aber richtig ist es noch nicht. Denn ich kann so z.B. keine Prozeduren aufrufen ohne wieder eine Klasse anlegen zu müssen.
Beispiel ausn VB
Public Module thisModule
Dim Public mySet As DataSet = New DataSet;
Sub Main()
Dim userName As String = "Franz"
MsgBox("Dein Name ist " & userName)
End Sub
End Module
???
DataSet mySet = new DataSet();
public void Main()
{
string userName = "Franz";
MessageBox.Show("Dein Name ist " + userName);
}
???
Egal wo ich nun im Code arbeite (in VB sogar ohne Einbindung per Imports/Using) kann ich nun sowohl auf die Klasse MySet zugreifen, wie auch auf die Prozeudure Main
Kurze Frage für die die auch VB kennen:
In VB gibt es Module. Gibt es die auch in C#?
Langfassung:
Ich möchte gern eine reihe von Objecten definieren, die in alle fast Fenster eingebunden werden. Diese gehen von einfachen Strings mit einen Dateipfad bis hin zu einem DataSet, seiner initialisierung und einlesen der Daten.
Diese sollen über das Hauptfenster einfach initialisiert werden und dann überall in den Projektdateien verfügbar sein, ohne das ich dazu eigene Instanzen bespielsweise einer Klasse erstellen muß. Dies hätte dann zur folge, das ich es z.b. wieder mit zwei DataSets in unterschiedlichen Instanzen zu tun habe (was ich absolut vermeiden will).
Danke. Das hatte ich auch gerade entdeckt, aber geht das nicht auch aus WPF heraus? Das wäre mir am liebsten?
Sorry. Ich stehe gerade total auf dem Schlauch (datenbankenanbindungen waren mir schon immer ein graus).
Ich habe die Datenbank über die IDE erzeugt. Hier Tabellen eingefügt (z.b. Meistertagebuch). Diese mit Felder belegt wie Begin, Ende, Titel.
Sowie ein paar SubTabellen (bisher ohne Relation).
Dann habe ich die IDE das Dataset erzeugen lassen.
Aber wie gehts nun weiter?
Aber welche befehle brauche ich zwischen
InitializeComponent();
und
BindingOperations.SetBinding(tbBeginn, TextBox.TextProperty, myBinding);
??? Da hänge ich momenten
verwendetes Datenbanksystem: Microsoft SQL Server Compact 3.5 (.NET Framework-Datenanbieter für Microsoft SQL Server Compact 3.5)
Hallo,
ich bin neu in C# und WPF. Irgendwie schaffe ich es nicht, eine Simple verbing zu einer Datenbank mit meiner Application her zu stellen und eine Texteigenschaft meines WPF-Fensters daran zu binden.
Wie muß ich da am besten vorgehen?
Gruß Marco
Ich habe schon eine Probe mit einen eigenen Control (Benutzersteuerelement) gemacht. Aber irgendwo meine ich, gelesen oder gehört zu haben, das Benutzersteuerelemente nicht WPF-Like sind.
Habs in c# Express 2008 geladen und es gibt ein paar dutzend fehlermedlungen. Ich bin noch nicht fit genug, die zu beseitigen 😦.
Hallo,
irgendwie fehlt der in WPF, kann das sein? Wie kann man den schnellstmöglich nachbilden?
Gruß Marco
Hallo Experten,
ich möchte gern meinen Code übersichtlich halten, und einzelne Tabpages mit samt Design in eigene Dateien packen.
Ist es richtig, das ich dafür als Basis die Komponentenarte "Page" verwende? Wie kann ich diese dann dem Tabpage zu ordnen (mit dahinterliegenden Code, Prozeduren usw.).
Gehabt euch wohl...
ok. Hab mir was passendes ausgedacht. Ich werde meine Frage umformulieren. kannst diesen Thread dicht machen 😉
Auch das ist schwer. Am besten umschreibe ich es. Es ist eine ansammlung von Tools die sich alle irgendwie um einen gemeinsammen nenner drehen. So greifen zwischen A und B die z.B. Datenbanken mehrfach inneinander, und zwischen A und C gibt es noch nicht mal einen gemeinsamen nenner, wärend sich D wieder mit allem in verdinung setzt usw. Naja. Ich habe das selbe System schonmal verwendet und als Win32 Anwendung unter Delphi geschrieben. Halt als MDI.
Vor allem finde ich es sehr geschickt, das jedes "Fenster/Tool" in einer eigenen Datei liegt und der Code somit übersichtlich bleibt. Ich möchte weder groß wie bei PHP mit Includings/Module arbeiten noch alles in einen gigantischen Fenster-Code (TabControls) rein packen.
Nur um mal ne Dimension zu nennen, das alte Programm hat weit über 100.000 Zeilen Code ohne die Designbeschreibungen., besteht aus ca. 80 MDI-Fenster und ca 5 dutzend Modulen, zwei dutzend eigene Klassen usw.
Hallo herbivore...
wie nutzt man dann eine Anwendung die über mehrere Fenster gehen. Tabcontrols? Da diese Anwendung die ich vor habe, mit mehreren offenen Fenstern arbeiten muß, die auch gut in das dreckige Dutzend gehen kann.
Hallo,
ich bin sowohl neu in C# als auch im WPF. Was mich ein wenig reizt ist, das scheinbar kein MDI innerhalb von WPF möglich ist. Was nutzt man statt dessen? Jedes fenster extra aufploppen lassen finde ich extrem unproffessionell.
Gruß