Laden...
Avatar #avatar-2980.jpg
Taladan myCSharp.de - Member
Individualprogrammierer sowie Student Osnabrück Dabei seit 06.04.2008 582 Beiträge
Benutzerbeschreibung

Forenbeiträge von Taladan Ingesamt 582 Beiträge

05.09.2008 - 11:08 Uhr

Hallo,

ich wollte einer meiner Komponenten eine Visuelle bestätigung geben, wenn jemand ein gültiges DropObjekt darauf zieht. Z.b. Hintergrund einfärben. Jedoch weiß ich nicht wie ich den Eventtrigger entsprechend einstellen muß. Finde leider auch nichts dazu im Netz.

05.09.2008 - 10:06 Uhr

Das kann ich nicht mit sicherheit sagen. Ich habe nur schon bei einigen Events probleme gehabt, als ich es noch nicht so gemacht habe. Ging so weit, das der Rechner von allein neu gestartet hat oder nicht mehr ansprechbar war.

04.09.2008 - 22:51 Uhr

Ich kann dir da leider net weiter helfen, aber es gab mal ein deutsches Webcast dazu von Microsoft.

03.09.2008 - 19:33 Uhr

Hallo,

ich nutze mehrere Tabellen. Zwei davon sind verbunden mit einer DataRelation namens "Firmen2Stellen". Ich habe alle Controls per WPF gebunden. Hier funktioniert alles einwandfrei. Alle Stellen zu einer Firma werden in einer Listbox aufgelistet.

Nun möchte ich über die typischen Navigationstasten (vor/zurück/erster/letzter-Buttons) den Nutzer eine Komfortable lösung zum Navigieren bieten. Dies funktioniert auch mit der Firmentabelle


BindingListCollectionView NavFirmen;
NavFirmen = (BindingListCollectionView)CollectionViewSource.GetDefaultView(DataBase.Firmen);

Jedoch finde ich keine Lösung, wie ich eine BindingListCollectionView für die DataRelation erzeugen kann. Weiß jemand rat?

03.09.2008 - 12:25 Uhr

Also ich bin schon ein paar Schritte weiter

Die Abfrage klappt,

StellePosition.Text = (((DataRowView)NavFirmen.CurrentItem).CreateChildView("Firmen2Stellen")).Count.ToString();

Jedoch funktioniert meine BindingListCollectionView mit der Bindung nicht.


        BindingListCollectionView NavStellen;
                NavStellen = (BindingListCollectionView)CollectionViewSource.GetDefaultView((((DataRowView)NavFirmen.CurrentItem).CreateChildView("Firmen2Stellen")));


03.09.2008 - 12:20 Uhr

Die behandeln das aber mit WindowsForms nicht mit WPF.

03.09.2008 - 11:39 Uhr

Hallo,

ich würde gerne eine Listbox so einfügen in mein Dokument, wie es bei VS möglich ist. Ich meine damit diese kleinen Boxen wie die ToolBox oder Eigenschaften. Wenn sie eingeklappt sind und man mit der Maus drüber fährt, klappt diese sich aus, verschiebt aber nicht die anderen Elemente sondern Zeichnet sich darüber. Erst beim ensprechenden Button werden diese dann verschoben.
Hat jemand ne Ahnung wie man so etwas realisieren kann?

03.09.2008 - 11:16 Uhr

Das ist ein Abfragen der Listbox. Wenn die Listbox Disabled ist, funktioniert das nicht mehr. Daher will ich es tatsächlich von der Datenbank aus machen.

03.09.2008 - 09:23 Uhr

verwendetes Datenbanksystem: XML

Hallo,
ich habe eine Beziehung namens Firmen2Kontakte. Per WPF lege ich entsprechend die Controls fest. Das funktioniert einwandfrei.
Nun möchte ich eine "Anzahlanzeige" einbauen. D.h. wie viele Kontakte es zu einer Firma gibt. Mein ListView zeigt ja schon die richtige d.h. gefilterte Menge an Datensätze an. Aber wie kann ich die Anzahl per c# code abfragen?

03.09.2008 - 08:50 Uhr

Hier. Da viele Events vom Element verarbeitet werden, sollte man in solchen Fällen diese vorher behandeln.


PreviewMouseDoubleClick="DeinTollesEvent"

Wenn du in VS/Express dir ein Element markiert und F1 drückst, bekommst du meißt eine Hilfe geboten. Wenn du dir die Member Auflisten läst (i.d.R. ein Quicklink unten auf der angezeigten Seite) findest du u.a. auch alle Events.

03.09.2008 - 08:44 Uhr

Du brauchst eine RichTextBox oder DokumentViewer (möglich das andere Komponenten das auch können, mir sind aber keine bekannt). Bei den Anderen kann man nur den gesamten Text formatieren. Dies ist natürlich auch per Code realisierbar


            <RichTextBox  Name="richTextBox1" Width="200">
                <FlowDocument >
                    <Paragraph Background="AliceBlue" >
                        <Run>Paragraph 1</Run>
                    </Paragraph >
                    <Paragraph BorderThickness="2" BorderBrush="Green">
                        <Run>Paragraph 2</Run>
                    </Paragraph>
                    <Paragraph>
                        <Run >Paragraph </Run>
                        <Run FontSize="22">Test</Run>
                        <Run>er</Run>
                    </Paragraph>
                </FlowDocument>
            </RichTextBox>

03.09.2008 - 08:30 Uhr

Simpler geht es kaum


                <ListView.ItemsSource>
                    <Binding Path="Firmen2Stellen/Stellen2Kontakte" />
                </ListView.ItemsSource>

02.09.2008 - 14:58 Uhr

Hallo,

ich habe drei Tabellen Firma, Stellen, Kontakte. Die Fima ist per Contraint an Sprechpartner gebunden und das gleiche gilt für Stellen/Kontakte.

Ich bekomme ohne Probleme per WPF die Anzeige von den Stellen zu den Firmen hin. Doch leider nicht von den Kontakten zu den Stellen.


DataContext = DataBase.Firmen; //DataBase ist ein DataSet mit allen Tabellen


            <ListView Name="lvFirmen" Grid.ColumnSpan="3" IsSynchronizedWithCurrentItem="True" SelectionMode="Single" ItemsSource="{Binding}">
                <ListView.View>
                    <GridView  >
                        <GridViewColumn DisplayMemberBinding="{Binding Path=ID}"	Header="ID"/>
                        <GridViewColumn DisplayMemberBinding="{Binding Path=Firmenname}"	Header="Firmenname"/>
                    </GridView>
                </ListView.View>
            </ListView>

<ListView Name="lvStellen" Grid.ColumnSpan="3" IsSynchronizedWithCurrentItem="True" SelectionMode="Single">
                <ListView.ItemsSource>
                    <Binding Path="Firmen2Stellen"/>
                </ListView.ItemsSource>
                <ListView.View>
                    <GridView>
                        <GridViewColumn DisplayMemberBinding="{Binding Path=ID}"	Header="ID" Width="40"/>
                        <GridViewColumn DisplayMemberBinding="{Binding Path=FirmenID}"	Header="FirmenID" Width="40"/>
                        <GridViewColumn DisplayMemberBinding="{Binding Path=Stelle}"	Header="Stelle" Width="400"/>
                    </GridView>
                </ListView.View>
            </ListView>

<ListView Name="lvKontakte" Grid.ColumnSpan="3" IsSynchronizedWithCurrentItem="True" SelectionMode="Single">
                <ListView.ItemsSource>
                    <Binding Path="Stellen2Kontakte" Mode="TwoWay" />
                </ListView.ItemsSource>
                <ListView.View>
                    <GridView>
                        <GridViewColumn DisplayMemberBinding="{Binding Path=ID}"	Header="ID" Width="40"/>
                        <GridViewColumn DisplayMemberBinding="{Binding Path=Datum}"	Header="Datum" Width="40"/>
                        <GridViewColumn DisplayMemberBinding="{Binding Path=Typ}"	Header="Typ" Width="400"/>
                    </GridView>
                </ListView.View>
            </ListView>

01.09.2008 - 13:46 Uhr

Nein nicht ganz. Du erstellst ein Datatemplate. Dieses wird der Listbox zu geordnet. Jedes ListboxItem stellt sich dann entsprechend des DataTemplates dar. Wenn du in deinen DataTemplate jetzt ein Label definierst und du ihm dann eine Data zu weisen willst mußt du ihm auch sagen wo und was.

Hier wird ich den Content des Labels die Spalte Name zu und FontWeigt die Spalte Dick zu.


<Label Content="{Binding Path=Name}" FontWeight="{Binding Path=Dick}" />

Diese Daten werden dann aus den dem Object geholt, welches das Binding bestimmt. In deinen Fall, wäre das dann wohl das ListBoxItem welches wieder einen einzigen Datensatz der Datenbank wiederspiegelt, die du der ListBox zu geordnet hast.

**Bindung **
ListBox = DatenQuelle
ListBoxItem = Datensatz (Bindung wird automatisch erzeugt, sofern du oben und unten alles richtig gemacht hast).
Component.Eigenschaft = Datenfeld

Die Listbox erzeugt also automatisch so viele ListBoxItems wie in deiner DatenQuelle vorhanden sind.

Zu deinen Bildern. Hier wäre es am einfachsten, das du den Pfad übergibst. An sonnsten must du mit einen ValueConverter arbeiten, der dann ein Bitmap an deine Image-Komponente übergibt.

01.09.2008 - 09:25 Uhr

Doch Templates sind das was du brauchst, genauer ein DataTemplate.

Hier siehst du mal ein Beispiel aus einem meiner Proggs.
Das DataTemplate kommt zu deinen Resourcen.
Per C# muß man hier noch eine passendes Object(List) zuordnen.
Ob du Labels oder Images oder eine TuWasTolles-Komponente bleibt relativ. Du mußt nur die entsprechenden Eigenschaften eine Daten-Bindung zuordnen

Ich hoffe es hilft weiter.


        <DataTemplate x:Key="dtIniCharakter" x:Name="IniTemplate" > 
            <StackPanel>
                <Grid Name="UnSelected">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition />
                        <ColumnDefinition />
                        <ColumnDefinition />
                    </Grid.ColumnDefinitions>
                    <Label Content="{Binding Path=Name}" FontWeight="Bold" />
                    <Label HorizontalAlignment="Right" Foreground="Silver" Grid.Column="1" Content="{Binding Path=Ini}" FontWeight="Bold" />
                    <Label Content="{Binding Path=CharType}" FontWeight="Bold" Grid.Column="2" />
                </Grid>
                
                <Grid Name="Selected" Visibility="Collapsed">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition />
                        <ColumnDefinition />
                    </Grid.ColumnDefinitions>
                    <Label  Name="Test" Content="{Binding Path=Name}" FontWeight="Bold" />
                    <Label Grid.Column="1" Name="tbInput" Content="{Binding Path=Ini}" FontWeight="Bold" />
                </Grid>
                
            </StackPanel>
            <DataTemplate.Triggers>
                <DataTrigger Binding="{Binding RelativeSource= {RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem} }, Path=IsSelected }" Value="True">
                    <Setter TargetName="UnSelected" Property="Grid.Visibility" Value="Collapsed" />
                    <Setter TargetName="Selected" Property="Grid.Visibility" Value="Visible" />
                </DataTrigger>
            </DataTemplate.Triggers>
        </DataTemplate>


// Ein Beispiel für eine ListBox
        <ListBox Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="1" MinWidth="120" Name="lbTabelle" 
                 Background="Transparent" IsSynchronizedWithCurrentItem="True" 
                 HorizontalContentAlignment="Stretch" 
                 SelectionChanged="lbInitabelle_SelectionChanged" 
                 ItemTemplate="{DynamicResource dtIniCharakter}" ItemsSource="{Binding}" />


31.08.2008 - 22:57 Uhr

Die Lösung ist recht einfach. In der Hilfe steht

Einige Steuerelemente weisen u. U. eine inhärente Klassenbehandlung für Maustastenereignisse auf. Das Drücken der linken Maustaste ist das Ereignis, das mit höchster Wahrscheinlichkeit über eine Klassenbehandlung in einem Steuerelement verfügt. Häufig wird das zugrunde liegende Mouse-Klassenereignis von der Klassenbehandlung als behandelt markiert. Wenn das Ereignis als behandelt markiert ist, werden andere Instanzhandler, die an das betreffende Element angefügt sind, nicht auf normale Weise ausgelöst. Andere Klassen- bzw. Instanzhandler, die in der Bubbling-Richtung zum Stamm der UI-Struktur an Elemente angefügt sind, werden ebenfalls nicht auf normale Weise ausgelöst.

Ergo nutzt du ein PreviewMouseDown.

Zudem du deine Ereignisse lieber so definieren solltest, da an sonsten Probele auftauchen können. Es könnten schwere Ausnahmefehler beim Auslösen auftreten, da du keine eigene Instanz erzeugst und so z.B. auch keine Threadsicherheit hast.


lb.PreviewMouseDown += new MouseButtonEventHandler(lb_PreviewMouseDown);
lb.MouseDown += new MouseButtonEventHandler(lb_MouseDown);

23.08.2008 - 18:00 Uhr

ListView hat kann ein entsprechendes Grid zur Verfügung stellen und noch viel mehr. Daher ist ein DataGridView unnötig.

Ich habs raus gefunden. Man sieht manchmal den Wald vor lauter Bäume nicht.


lbNamensregionen.SelectedValuePath = "ID";
lbNamensregionen.SelectedValue = row["ID"];

23.08.2008 - 12:39 Uhr

Hallo,

ich habe eine ListView an eine Datenbank gebunden. Nun füge ich eine DataRow hinzu. Selbstverständlich möchte ich, das die neu hinzugefügte DataRow aus selektiert wird. Leider funktioniert das nicht so wie ich will. Es wird tatsächlich kein Item selectiert.

Per SelectedIndex kann ich nicht arbeiten, da mein ListView Sortiert wird.


            dtNamensregionen.Rows.Add(row); // dtNamensregionen = DataTable
            lbNamensregionen.SelectedItem = row; // lbNamensregionen = Mein ListView

23.08.2008 - 10:22 Uhr

Hallo,

ich habe ein kleines Programm geschrieben, nutze aber ein weiteres in diesen Programm, was verschiedene selbstgeschriebene Komponenten (und nur diese) beinhaltet (z.B. ein DatePicker).

Wenn ich dieses Assembly nun im meinen Stammprojekt als erforderliche Komponente angebe, funktioniert das Programm nicht mehr.

Diese Fehlermeldung finde ich in der generierten Fehlerdatei (unnötiges raus gelöscht):

Der Verweis im Manifest stimmt nicht mit der Identität der gedownloadeten Assembly 'Komponenten.exe' überein.

Hat jemand eine Idee?

23.08.2008 - 08:50 Uhr

Richtig. Die anderen beiden Buttontypen kennen den (dauer)Status nicht.

21.08.2008 - 14:53 Uhr

Ja. Sorgt dafür , das bestimmte ausnahmen nicht kommen. Beispiel: Du hast eine Datenverbindung (Constraint) und lädst tabellenweise deine Daten, klar das es zu ausnahmen kommen muß, da bestimmte daten (noch) nicht gelesen sind.

Zudem während der Zeit keine Events ausgelöst werden, was auch auf der Positivliste ist.

20.08.2008 - 19:26 Uhr

Habs raus gefunden. Eigendlich simpel, wenn man weiß wie



            foreach (DataTable dt in BigBase.Tables)
            {
                // Legt die Auswahl fest
                string expression = "UserDefinition = true";

                // Legt die Sortierung fest
                string sortOrder = "ID ASC";
                DataRow[] foundRows = null;
                // Abfrage des filters
                foundRows = dt.Select(expression, sortOrder);

                // Schema kopieren auf ein neue DataTable
                System.IO.MemoryStream ms = new System.IO.MemoryStream();
                dt.WriteXmlSchema(ms);
                ms.Position = 0;
                DataTable NewTable = new DataTable();
                NewTable.ReadXmlSchema(ms);

                //Daten übertragen
                NewTable.BeginLoadData();
                foreach (DataRow copyRow in foundRows)
                    NewTable.ImportRow(copyRow);
                NewTable.EndLoadData();
                NewTable.TableName = dt.TableName;
                NewTable.WriteXml(pfad + dt.TableName + ".xml");
            }


20.08.2008 - 19:07 Uhr

Arg Fehler meinerseits, hatte noch oben den Debugingcode gepostet. Fehlermelung lautet

Das Objekt des Typs NamensregionenRow kann nicht in Typ System.IConvertible umgewandelt werden.<Meistertools.DataSets.Namen+NamensregionenRow> konnte nicht in der ID-Spalte gespeichert werden. Erwarteter Typ: Int32.

Und erfolgt hier:


 // Legt die Auwahl fest
                string expression = "UserDefinition = true";

                // Legt die Sortierung fest
                string sortOrder = "ID ASC";
                DataRow[] foundRows = null;
                // Abfrage des filters
                foundRows = dt.Select(expression, sortOrder);

                System.IO.MemoryStream ms = new System.IO.MemoryStream();
                dt.WriteXmlSchema(ms);
                ms.Position = 0;
                DataTable NewTable = new DataTable();
                NewTable.ReadXmlSchema(ms);                
                NewTable.Rows.Add(foundRows); // Hier kommt der Fehler
                NewTable.TableName = dt.TableName;
                
                NewTable.WriteXml(pfad + dt.TableName + ".xml");

20.08.2008 - 19:00 Uhr

Und zwar genau Hier



NewTable.ReadXmlSchema(ms);


20.08.2008 - 17:50 Uhr

So weit war ich auch schon, doch scheitert es an der Ausführung. Und zwar sagt der mir
"Das Stammelement ist nicht vorhanden." Sobald Daten in einer Tabelle ist.


            foreach (DataTable dt in BigBase.Tables)
            {
                // Legt die Auwahl fest
                string expression = "UserDefinition = true";

                // Legt die Sortierung fest
                string sortOrder = "ID ASC";
                DataRow[] foundRows = null;
                // Abfrage des filters
                foundRows = dt.Select(expression, sortOrder);

                DataTable NewTable = new DataTable();
                System.IO.MemoryStream ms = new System.IO.MemoryStream();
                dt.WriteXmlSchema("d://test");
                ms.Position = 0;
                NewTable.ReadXmlSchema(ms);                
                NewTable.Rows.Add(foundRows);
                NewTable.TableName = dt.TableName;
                
                NewTable.WriteXml(pfad + dt.TableName + ".xml");

                MessageBox.Show(dt.TableName);
            }

19.08.2008 - 21:26 Uhr

Ich weiß nicht wie ich die daten vernünftig trennen kann, ohne aufwendige prozeduren zu schreiben.

19.08.2008 - 18:40 Uhr

Das sind doch die Grundbegriffe, ich ich schon seit jahren kenne. Aber es geht mir darum nur spezielle daten zu speichern. nicht alle!!!

18.08.2008 - 21:57 Uhr

verwendetes Datenbanksystem: XML

Hallo Experten, ich zerbreche mir gerade den Kopf und komme irgendwie nicht weiter. Ich möchte gerne zwei verschiedene XML Dateien als Quelle verwenden.
Die 1 und wichtigere Datei soll die Grunddaten, als auch Hilfs- und Startdaten liefern.
Die 2 Datei soll sowohl Änderungen der Daten aus der 1, als auch hinzugefügte Datensätze speichern.
Die erste Datenbank sollte jedoch generell nicht Überschrieben werden, da über diese später auch evtl Updates geliefert werden sollen.

Jetzt stellen sich mir zwei Fragen:

  1. Wie lese ich die Dateien aus?
  2. Wie schreibe ich die Dateien?

Ich dachte schon, die Dateien über ein entsprechendes zusätzliches bool-Feld (in meinen Falle "UserDefinitions") zu Kennzeichnen. Doch bereitet mir das Speichern sorgen. (Ich habe keine Ahnung ob mein Ladevorgang richtig ist).

Hat jemand ne idee wie man das bestenfalls bewergstelligen kann?

15.08.2008 - 20:41 Uhr

Das scheint bei einen Datatemplate innerhalb einer Listbox oder ähnlichen Auflistung nicht zu funktionieren. Zumal das Control ja auch mehrmals vorhanden ist.

15.08.2008 - 19:01 Uhr

Ich nutze ein DataTemplate um mehrere Objecte in einer Listbox an zu zeigen. So weit so gut. Doch nun möchte ich gern auf eines der generieten Controls zu greifen. Und zwar eine Textbox des selektierten eintrags. Nur habe ich keine Ahnugn wie ich das machen kann.

bei Base.FindName findet er nichts. 😦.
ListBox.SelectedItem gibt nur das gebundene Object nicht Container wider.
ItemContainerGenerator.ContainerFromIndex bleibt ebenfalls ohne Erfolg...

13.08.2008 - 20:10 Uhr

Hallo,

ich möchte gern einen Anwendungsweiten Style hinzufügen. Ich weiß, das man dazu den Style in der App.xaml definieren muß. Doch möchte ich diese gern in einer Seperaten Datei haben. Dazu verwendet man wohl ResourceDictionary. Jetzt habe ich jedoch das Problem, wie ich die in App.xaml einbinde. Der Compiler verlangt einen x:key... Wenn ich den zu weise, wird des Style jedoch nicht umgesetzt.
Falls ich dann versuche, bei der Page den Style zu zu weisen, bleibt dies ohne erfolg 😦.
Auch die Anweisungen Page-Hintergrund auf Blau zu setzten bleibt generell ohne Erfolg...


<Application.Resources>
         
        <Style TargetType="Page">
            <Setter Property="Background" Value="Blue" />
        </Style>
        <ResourceDictionary x:Key="Taladan"  Source="Taladan.xaml" /> 
    </Application.Resources>


<Page x:Class="Appl1.Seite112.Seite112"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Seite112" Style="{DynamicResource Taladan}" >

08.08.2008 - 13:22 Uhr

Erst einmal binde dein objekt an das nächst höhere Element. In deinen Falle Windows. und NUR daran. Alle Kind-Elemente erhalten die gleiche Bindungsmöglichkeit, sofern diese keine neue zu geordnet bekommen.

Dann heißte es auch


{Binding Path=Vorname}

Bei der ListBox mußte dann die Eigenschaft ItemSource binden. ggf (manchmal bei Objekten notwendig) mußte dann @Vorname schreiben.

08.08.2008 - 13:04 Uhr

Ok. Dabei kann ich nicht helfen. Sorry.

08.08.2008 - 00:20 Uhr

Doch ist es. Ist eigendlich ziemlich simpel. Mach eine eigenes neues Fenster, dieses füllst du mit deinen Image und dann legst du folgenden Code fest [...]
Das sieht aber irgendwie nach Windows Forms aus.
In diesem Thread geht es aber um Silverlight.

Ups falsches Script erwischt.

hier das richtige 😉 Extra noch mal geprüft. Funktioniert auch 😁


  #region FullScreen
            /// <summary>
            /// Sorgt für den Fullscreenmodi
            /// </summary>
            /// <param name="e"></param>
            protected override void OnPreviewKeyDown(System.Windows.Input.KeyEventArgs e)
            {
                if ((e.Key == Key.Escape) || (e.Key == Key.F11))
                {
                    #region Fullscreen
                    if (_fullScreen)
                    {

                        this.WindowState = _previousWindowState;
                        this.WindowStyle = WindowStyle.SingleBorderWindow;

                        _fullScreen = false;

                        e.Handled = true;
                    }
                    else if (e.Key == Key.F11)
                    {

                        _previousWindowState = this.WindowState;
                        this.WindowStyle = WindowStyle.None;

                        this.WindowState = WindowState.Maximized;

                        _fullScreen = true;

                        e.Handled = true;
                    }
                    #endregion
                }
            }

            private bool _fullScreen = false;
            private WindowState _previousWindowState;
        #endregion Fullscreen

Viel Spass damit 😁

07.08.2008 - 23:59 Uhr

Und wie soll ich gleichzeit DataBinding verwenden und die Sachen manuell eingeben?

Ich scripte meist so, das ich, wenn ich unbedingt im Designer das Design optimieren muß, mir 1-2 Datensätze per WPF her zaubere und DANN erst das Binding erstelle. Meistens ist das ja nur eine Änderung.

07.08.2008 - 19:32 Uhr

Ich glaube nicht das das mit "Standard Methoden" so einfach möglich ist... Zumindest ist mir nicht bekannt das man sowas auch ohne DirectX oder OpenGL bewerstelligen kann. Mit DirecktX sind aber nur ein paar Zeilen Code 😉

Doch ist es. Ist eigendlich ziemlich simpel. Mach eine eigenes neues Fenster, dieses füllst du mit deinen Image und dann legst du folgenden Code fest

     WindowState = WindowState.Normal;  
     WindowStyle = WindowStyle.None;  
     Topmost = true;  
     WindowState = WindowState.Maximized;  

Es gab irgendwo noch eine einfachere Variante. Die Finde ich allerdings gerade nicht wieder 😦.

07.08.2008 - 19:22 Uhr

Im Designer werden nur Daten angezeigt, die auch per WPF definiert wurden. Also mußte wohl oder übel da deine DummyDaten eingeben.

07.08.2008 - 12:22 Uhr

Wo genau ist den dein Problem? Kein Zeilenumbruch?

07.08.2008 - 12:20 Uhr

Evtl mal die breite und höhe der Items angeben. Hatte das problem auch schon mal. Das Proggi ist leider geschrottet, deshalb kann ich nicht nach schauen.

07.08.2008 - 10:59 Uhr

Nur ne vermutung. Listview verwendet unterschidliche ansichten. In der Standartansicht ist dies ListView.View. Das sind Kacheln 😉.

07.08.2008 - 10:57 Uhr

@talla: Ist der schon angekündigt?

07.08.2008 - 10:43 Uhr

Es ging eher darum, wie ich benannte Dateien per Programmcode öffnen und durchsuchen kann. Wie ich die DLL´s einbinde und verhindere das diese bei Rechnern ohne passende Treiber geöffnet werden.

07.08.2008 - 02:23 Uhr

Hallo,

ich möchte gern ein Programm schreiben, was selbst erstellte Papierformate (PDF und XPS) textmäßig durchsucht. Hat jemand da einen guten Tipp für mich, wie ich das anstelle?

07.08.2008 - 01:54 Uhr

Hallo, ich möchte gern ein Validierungstemplate nutzen. Dummerweise verhält sich mein Template nicht so wie ich es wollte. Ich Validiere eine Textboxt. Statt die Zelle im Grid zu erweitern und dort meinen Errortext aus zu geben, wird dieser Textteil einfach über die anderen Controls gezeichnet.

Kann mir jemand helfen?


        <ControlTemplate x:Key="validationTemplate">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition />
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                </Grid.RowDefinitions>
                <TextBlock Foreground="Red" FontSize="20">!</TextBlock>
                <TextBlock Grid.Column="1" Foreground="Red" FontSize="12pt" Text="{Binding ElementName=MyAdorner, Path=AdornedElement.(Validation.Errors)[0].ErrorContent}"/>
                <Border  Grid.Column="0"  Grid.Row="1" Grid.ColumnSpan="2" BorderBrush="Red" BorderThickness="1">
                    <AdornedElementPlaceholder Name="MyAdorner" />
                </Border>
            </Grid>
        </ControlTemplate>

<TextBox Grid.Column="1" Grid.Row="5" Validation.ErrorTemplate="{StaticResource validationTemplate}">
                        <TextBox.Text>
                            <Binding Path="Anschaffungsdatum" UpdateSourceTrigger="PropertyChanged">
                                <Binding.ValidationRules>
                                    <v:ValidatorDatum />
                                </Binding.ValidationRules>
                            </Binding>
                        </TextBox.Text>
                    </TextBox>

03.08.2008 - 03:09 Uhr

Simpleste Art ist das Item bei zu behalten und den Content mit einen UserControl oder ähnlichen zu füllen. Also bei generierten Items wäre das ein DataTemplate


<Page.Resources>
<DataTemplate x:Key="KalenderTemplate">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label HorizontalAlignment="Left" VerticalAlignment="Top" Content="{Binding Path=Datum}" FontWeight="Bold" x:Name="lbDatum"/>
<Label HorizontalAlignment="Right" VerticalAlignment="Top" Content="{Binding Path=Uhrzeit}" Grid.Column="1" FontWeight="Bold" x:Name="lbUhrzeit"/>
<Label HorizontalAlignment="Left" VerticalAlignment="Top" Content="{Binding Path=Firma}" Grid.Row="2" Grid.ColumnSpan="2" x:Name="lbFirma"/>
<Label Content="{Binding Path=Typ}" Grid.ColumnSpan="2" Grid.Row="1" Foreground="#FF0F5BED" x:Name="lbTyp"/>
<Grid Grid.ColumnSpan="2" Grid.RowSpan="1" Grid.Row="5" Visibility="Visible">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Content="{Binding Path=Ansprache}" x:Name="lbAnsprache"/>
<Label x:Name="lbAnsprechpartner" Content="{Binding Path=Ansprechpartner}" Grid.Row="1" Grid.Column="1"/>
<Label Content="{Binding Path=Telefon}" x:Name="lbTelefon" Grid.Row="2" Grid.Column="2"/>
</Grid>
<Grid Grid.ColumnSpan="2" Grid.RowSpan="1" Grid.Row="3" Visibility="Visible">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Content="{Binding Path=Strasse}" x:Name="lbStrasse" />
<Label Content="{Binding Path=Hausnummer}" x:Name="lbHausnummer" Grid.Row="1" Grid.Column="1" />
</Grid>
<Grid Grid.ColumnSpan="2" Grid.RowSpan="1" Grid.Row="4" Visibility="Visible">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Content="{Binding Path=PLZ}" x:Name="lbPLZ" />
<Label Content="{Binding Path=Ort}" x:Name="lbOrt" Grid.Row="0" Grid.Column="1" />
</Grid>
</Grid>
</DataTemplate>

</Page.Resources>


//Im Seitencontent
<ListBox IsSynchronizedWithCurrentItem="False" ItemsSource="{Binding}" x:Name="lbKalender" ItemTemplate="{DynamicResource KalenderTemplate}" HorizontalContentAlignment="Stretch" ScrollViewer.VerticalScrollBarVisibility="Visible" />



Kurz gesagt, das erstellen von eigenen Controls ist bei WPF nur noch nötig wenn du dem Controll völlig neue Funktionen mit geben willst. Da Controls mit einen Content auch ein Container mit mehreren Elementen beinhalten kann. Und diese könnten dann deine Informationen speichern sowie anzeigen.

03.08.2008 - 03:02 Uhr

Probier es mal so



                BitmapImage bi = new BitmapImage();
                // BitmapImage.UriSource muss in einem BeginInit/EndInit Block stehen
                bi.BeginInit();
                // Bitmap mag nur Uri´s
                bi.UriSource = new Uri(path, UriKind.RelativeOrAbsolute);
                // Damit eine eigenständige Instanz erstellt wird, die unabhängig von der Resource ist
                bi.CacheOption = System.Windows.Media.Imaging.BitmapCacheOption.OnLoad;
                bi.EndInit();
                // Zuordnung der Bitmap
                this.MyImage.Source = bi;

Damit erzeugst du eine eigenständiges Bitmap und kannst dieses auch direkt zu Ordnen

Ich habe mich zwar noch nie damit beschäftigt, aber für mich sieht der Zugriff unterschiedlich aus


ResourceManager rm = new ResourceManager(this.GetType().Namespace + ".MyPictures", this.GetType().Assembly);
ResourceManager rm = new ResourceManager(this.GetType().Namespace + "." + stringName, this.GetType().Assembly);
                

02.08.2008 - 16:33 Uhr

Ja. Ich nutze ja auch XML als Datenbank zur Zeit. (eigendlich, seit dem ich die Möglichkeit entdeckt habe). Nur habe ich nie Relationen benutzt, sondern eigene Filter geschrieben. Nun muß ich durch WPF ein wenig umdenken.

Ich gehe von der bezeichnung aus, die mir VB anbietet.

02.08.2008 - 16:21 Uhr

Was ist dann eine Beziehung?

01.08.2008 - 17:44 Uhr
  1. Ab welche Datenmengen lohnt es sich, statt XML-Daten Datenbanken zu verwenden?

  2. Frage zu Relationen. Irgendwie finde ich das Prinzip von Beziehungen und Fremdschlusseleinschrenkung nicht einleuchtend. Was genau ist damit nun gemeint. Meine VB C# Hilfe Spuckt mir keine Erklärung dazu aus (bzw ich habe sie nicht gefunden).

  3. Ich habe zwei Tabellen. Eine Tabelle mit Namen und regionialer Herkunft und eine weitere wo Daten zur entsrpechenden Region abgespeichert werden. Wie muß ich nun eine Datenrelation erstellen, wenn ich in der Tabelle Name nur die ID der Region abspeichern. Natürlich dürfen Namen nicht gelöscht werden, wenn eine Region gelöscht wird und umgekehrt.

  4. Ich möchte gern vom Konzept her in meiner Anwendung auf zwei verschiedene Datenbanktypen zurück greifen. Einmal eine Mitgelieferte mit Grunddaten. Und Daten des Nutzer in einer Zweiten. Die Daten des Nutzers sollen als einzelne Datensätze in Form von XML auf entsprechende Verzeichnisse abgelegt werden. Der Grund dafür ist, das die Grunddaten häufig und in Mengen erweitert und geändert werden. Da ist es einfacher die ganze Datenbank aus zu tauschen als Veränderungen zu schicken.
    Was denkt ihr Experten dazu?