Laden...

Forenbeiträge von baensch Ingesamt 135 Beiträge

22.09.2011 - 20:20 Uhr

Hi Leute,
wollte mir ein Numerical up down Control basteln, bei dem man ein binding auf den Wert setzen sollt. Mein Code sieht jz so aus.



    <Grid>

        <TextBox x:Name="txtNum" x:FieldModifier="private" Text="0" TextChanged="txtNum_TextChanged" VerticalContentAlignment="Center" />
        <Button Height="15" Width="15" x:Name="cmdUp" x:FieldModifier="private" VerticalAlignment="Top" HorizontalAlignment="Right" Content="Ä" Click="cmdUp_Click" FontSize="8" FontStyle="Normal" FontWeight="ExtraBlack" />
        <Button Height="15" Width="15" x:Name="cmdDown" x:FieldModifier="private" VerticalAlignment="Bottom" HorizontalAlignment="Right" Content="Å" Click="cmdDown_Click" FontSize="8" FontWeight="ExtraBlack"/>
    </Grid>



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace GeneratorView
{
    /// <summary>
    /// Interaction logic for Nud.xaml
    /// </summary>
    public partial class Nud : UserControl
    {
        public Nud()
        {
            InitializeComponent();
        }
        

        public int NumValue
        {
            get
            {
                return (int)this.GetValue(NumValueProperty);
            }
            set
            {
                this.SetValue(NumValueProperty, value);
            }
        }

        static void NumValueChangedCallBack(DependencyObject property, DependencyPropertyChangedEventArgs args)
        {
            Nud numericalUpDonw = (Nud)property;
            numericalUpDonw.NumValue = (int)args.NewValue;
        }

        public static DependencyProperty NumValueProperty = DependencyProperty.Register("NumValue", typeof(int),
            typeof(DependencyObject),
            new UIPropertyMetadata(0, new PropertyChangedCallback(NumValueChangedCallBack)));



        private void cmdUp_Click(object sender, RoutedEventArgs e)
        {
            NumValue = NumValue + 1;
        }

        private void cmdDown_Click(object sender, RoutedEventArgs e)
        {
            NumValue = NumValue - 1;
        }

        private void txtNum_TextChanged(object sender, TextChangedEventArgs e)
        {
            int _numValue;
            if (!int.TryParse(txtNum.Text, out _numValue))
            {
                txtNum.Text = _numValue.ToString();
                NumValue = _numValue;
            }

        }

    }
}


Mein Problem ist jetzt, dass mein Binding nicht richtig funktioniert.
Schreibe ich einen Wert in WPF auf das TextProperty wird er angezeigt. Möchte ich jedoch auf up oder down clicken ändert sich nur das DependencyProperty und nach außen ist nichts sichtbar. Das selbe bemerke ich auch, wenn ich einen wert im NUD eintrage: er ist nach außen hin nicht sichtbar.

Was mache ich falsch bei meinem DependencyProperty?

28.04.2011 - 16:01 Uhr

Hi Leute,
ich möchte ein Plug in für Acad schreiben und verwende dazu ObjectARX. Dieses PlugIn sollte für mehrere AutoCAD Versionen funktionieren.
Jedoch braucht jede Version von Acad eine andere DLL (namen von namespaces, klassen,... bleiben gleich).

Daher meine Frage: Ist es irgendwie möglich zur Laufzeit eine Referenz zu ändern? Oder könnte ich dieses Problem anders lösen?

17.03.2011 - 15:56 Uhr

Danke erstmal für die Antwort

Nur leider verstehe ich diese Beispiel bzw. wie ich es Anwenden muss nicht. Hättest du vielleicht auch noch ein paar genauere Infos?

17.03.2011 - 12:01 Uhr

Die gegebene X und Y Koordinate des Punkts liegt im WeltKoordinatensystem.

Ich möchte die X und Y Koordinate des Punkts auf meiner Ebene berechnen.

17.03.2011 - 11:33 Uhr

Also
-) der punkt liegt auf der ebene die durch X rotation Y rotation und Z rotation bestimmt ist
-) die Z Rotation der Ebene ist immer 0.
-) die X Rotation und die Y Rotation wird bestimmt.
-) die X und Y Koordinate sind auf das Welt-Koordinatensystem bezogen.

Ich möchte nun die X und die Y Koordinate des Punktes auf der Ebene bestimmen.

Hätte zu diesem Problem jemand vielleicht ein paar Ideen wie ich das Problem angehen könnte?

17.03.2011 - 09:54 Uhr

Hi Leute
Habe einen Point3D der mir mit X und Y Koordinate bekannt ist. Weiters ist mir bekannt die Rotation um X und die Rotation um Y der Ebene auf der er liegt;

Ich möchte diesen Punkt so drehen, dass die Z Koordinate 0 wird.

Ich dachte mir ich erledige diese Aufgabe mit einer Matrix3D und drehe diese um -RotationX und -RotationZ.
Mein Problem ist nun wie bekomme ich die Z Koordinate des Punktes, damit ich meinen Punkt mit der gedrehten Matrix multiplizieren kann.

08.03.2011 - 15:08 Uhr

tut mir leid ich meine wenn das dokument noch nicht gespeichert wurde, denn dann sieht man nur Mappe 1. Ansonsten ist es klar auf die dateiendung zu achten:D

08.03.2011 - 14:40 Uhr

Danke erstmal für die beiden Beiträge
Der Thread "Laufende COM-Objekte abfragen" hilft mir schon einmal weiter.

Verwende ich von diesem Thread "GetRunningCOMObjectNames()" bekomme ich zwar eine liste mit den aktuell laufenden Worksheets nur sind dabei auch andere objecte dabei.
Wie kann ich erkennen ob das objekt, dass ich aufruen will von Excel ist?
Also ich meine wenn das Excel Dokument noch nicht vorher gespeichert wurde

08.03.2011 - 12:50 Uhr

Hy Leute
Ich schreibe ein Programm, dass feststellen muss welche Excel Workbooks gerade offen sind. Mein Code sieht derzeit so aus (verwende das late Binding)


            objApplication = Marshal.GetActiveObject("Excel.Application");

            objBooks = objApplication.GetType().InvokeMember("Workbooks",
            BindingFlags.GetProperty, null, objApplication, null);

            object count = objBooks.GetType().InvokeMember("Count", BindingFlags.GetProperty, null, objBooks, null);

            List<string> list = new List<string>();

            for (int i = 1; i <= (Int32)count; i++)
            {
                Parameters = new Object[1];
                Parameters[0] = i;

                object book = objBooks.GetType().InvokeMember("Item", BindingFlags.GetProperty, null, objBooks, Parameters);
                object name = book.GetType().InvokeMember("Name", BindingFlags.GetProperty, null, book, null);
                list.Add(name.ToString());
            }


            return list;

Soweit funktioniert dieser code auch. Nur sobald ein zweiter Prozess von Excel gestartet ist erkennt mein Programm nur mehr eine der beiden Excel Instanzen.
Also habe ich zum Beispiel eine ExcelApplication mit Mappe1 und Mappe2 und eine weitere mit Mappe3, erkennt mein programm nur Mappe1 und Mappe2.

Ich bin mir auch sicher dass es an dem Marshal befehl liegt gibt es hierbei eine andere Möglichkeit um beide ExcelInstanzen zu erfassen?

17.02.2011 - 10:08 Uhr

Ich habe noch etwas recherchiert und habe entdeckt das man dieses Problem umgehen kann, indem mann einen ESC befehl an Excel sendet.

Habe nun getestet ob es funktioniert wenn man einen ESC befehl sendet. Leider funktioniert es nicht. Gibt es keine Möglichkeit den Edit einer Zelle zu beenden?

17.02.2011 - 09:12 Uhr

Ok danke nochmal
ist jz etwas peinlich, dass ich das noch nicht gelesen hab 😄

16.02.2011 - 16:55 Uhr

Ich habe noch etwas recherchiert und habe entdeckt das man dieses Problem umgehen kann, indem mann einen ESC befehl an Excel sendet.
Leider weiß ich nicht wie hat jemand eine Ahnung wie man soetwas sendet?

Achja und wenn ich über C# excel starte (siehe code) und ich beende es manuell verschwindet der prozess im taskmanager nicht warum ist das so? Muss ich da in meinem programm noch etwas tun bevor ich excel manuell beenden kann?

16.02.2011 - 15:32 Uhr

Hi Leute
Versuche mit C# eine Excel tabelle zu erstellen. Ich verwende dazu ein Late Binding. Leider bekomme ich, wenn in excel der Cursor blinkt also ein feld bearbeitet wird und ich versuche werte per C# zu ändern, eine Com Exception die besagt "Aufruf wurde durch Aufgerufenen abgelehnt". Gibt es eine möglichkeit dieses Problem zu umgehen?

Weiters ist mir aufgefallen, dass das beschreiben von 1024 zellen ca. 1,5s beträgt. Gäbe es noch andere möglichkeiten um diese Zeit zu verkürzen(ich müsste auf ca 0,5s kommen)?

ach ja noch ein Teil meines Codes


Type objClassType;
                objClassType = Type.GetTypeFromProgID("Excel.Application");
                objApplication = Activator.CreateInstance(objClassType);

                Parameters = new Object[1];
                Parameters[0] = true;
                objApplication.GetType().InvokeMember("Visible", BindingFlags.SetProperty, null, objApplication, Parameters);

                
                objBooks = objApplication.GetType().InvokeMember("Workbooks",
                BindingFlags.GetProperty, null, objApplication, null);

                objBook = objBooks.GetType().InvokeMember("Add",
                    BindingFlags.InvokeMethod, null, objBooks, null);

                objSheets = objBook.GetType().InvokeMember("Worksheets",
                    BindingFlags.GetProperty, null, objBook, null);

                Parameters = new Object[1];
                Parameters[0] = 1;
                objSheet = objSheets.GetType().InvokeMember("Item",
                    BindingFlags.GetProperty, null, objSheets, Parameters);



private void SetCell(string Cell, string Value)
        {
            Parameters = new Object[2];
            Parameters[0] = Cell;
            Parameters[1] = Missing.Value;
            object objRange = objSheet.GetType().InvokeMember("Range",
                BindingFlags.GetProperty, null, objSheet, Parameters);

           
            Parameters = new Object[1];
            Parameters[0] = Value;
            objRange.GetType().InvokeMember("Value", BindingFlags.SetProperty,
                null, objRange, Parameters);

        }

15.02.2011 - 10:34 Uhr

Hi Leute,

ist es möglich mit C# (.Net) eine Exe zu erstellen, die auf einem Rechner ohne installation und ohne .NetFramework läuft.

16.11.2010 - 11:51 Uhr

Ich verstehs immer noch nicht würde das dann so aussehen


private void Grid_Loaded(object sender, RoutedEventArgs e)
        {
            progressBar1.Maximum = 11;
            progressBar1.Minimum = 0;
            new Thread(UpdateProgressBar).Start();
        }

        public void UpdateProgressBar()
        {
            while (true)
            {
                progressBar1.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(UpdateBar));
            }
        }

        public void UpdateBar()
        {
            this.progressBar1.Value = this.ProgressValue;
        }

        public void Update(int i)
        {
           this.ProgressValue = i;

        }

16.11.2010 - 11:28 Uhr

@ujr

tschuldigung die beiden methoden Start und UpdateProgressbar sind Methoden des ProgressBar Forms.
Aufgerufen wird es mit

private void button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < 12; i++)
            {
                form.Start(i);
                System.Threading.Thread.Sleep(100);
            }
        }

Ach ja ich habe mir jz den thread angesehen und meinen Code im WPF Projekt geändert. Dieser sieht jz so aus:


public void UpdateProgressBar()
        {
            progressBar1.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(UpdateBar));
        }

        public void UpdateBar()
        {
            this.progressBar1.Value = this.ProgressValue;
        }

        public void Update(int i)
        {
           this.ProgressValue = i;
           new Thread(UpdateProgressBar).Start();

        }

aufgerufen wird Update vom Windows Forms Projekt.

nur leider bekomme ich hierbei das selbe ergebnis. Setze ich einen Breakpoint bei UpdateBar fällt mir auf, dass die Methode nur einmal aufgerufen wird.

Ich weiß echt nicht mehr weiter was ich noch probieren soll.

16.11.2010 - 11:03 Uhr

Nein ich habe es in keinem eigenen Thread gestartet, da dabei immer die fehlermeldung "The calling thread must be STA, because many UI components require this." kommt. Und mit Windows Forms funktioniert es mit

public void Start(int i)
        {
                this.ProgressValue = i;
                this.UpdateProgressBar();
           
        }

private void UpdateProgressBar()
        {
            if (progressBar1.InvokeRequired)
            {
                progressBar1.Invoke(new MethodInvoker(UpdateProgressBar));
            }
            progressBar1.Value = this.ProgressValue;
        }

Ist mir schon klar dass das wirklich nicht schön programmiert ist aber es war nur eben schnell zum testen programmiert.

Danke ujr ich werde mir den Thread gleich ansehen.

16.11.2010 - 10:34 Uhr

ich rufe das WPF fenster mit einer for schleife auf


for (int i = 0; i < 12; i++)
            {
                _bar.UpdateProgressBar(i);
                System.Threading.Thread.Sleep(100);
            }

Das Programm läuft die schleife komplett durch und erst nach der Beendung der Schleife wird alles aktualisiert.

Also am anfang value 0 für 1100ms und dann value 11.

Und wie meinst du woher der Thread der ein Control aktualisieren soll kommt?

16.11.2010 - 10:14 Uhr

Hi Leute
Ich versuche gerade eine Simple WPF ProgressBar zu programmieren.
Damit das Control immer rechtzeitig aktualisiert wird habe ich schon ein paar threads gelesen die beiden wichtigsten waren wohl Controls von einem Thread aktualisieren lassen und
WPF, Thread &amp; GetDirectory
.

Im zweiten Thread stand am ende dieses Codesnippet


public void IsFinishedGetJpgs( string[] a_jpgFiles )
{
    if ( !tb_Directory.CheckAccess( ) )
    {
        tb_Directory.Dispatcher.BeginInvoke(
            DispatcherPriority.Normal,
            new Action<string[]>( IsFinishedGetJpgs ), a_jpgFiles );
        return;
    }

    // hier kannst Du nun wieder im GUI Thread arbeiten
}

so dachte ich ich könnte es einfach für meine Zwecke missbrauchen und einfach schreiben


public void UpdateProgressBar(int i)
        {
            if (!progressBar1.CheckAccess())
            {
                progressBar1.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action<int>(UpdateProgressBar),i);
                return;
            }
            progressBar1.Value = i;
            
        }

Nur leider funktioniert das nicht.

Ich habe einfach eine leeres WPF Projekt mit einer ProgressBar.

Aufgerufen wird es von einer WindowsFormsAnwendung.

Was könnte ich übersehen haben?

03.11.2010 - 15:14 Uhr

Danke für die Antwort. Leider habe ich das schon gefunden.
Nur brauche ich für diesen Server eben dieses robot.key file ansonsten funktionieren die F tasten nicht. Ändere ich dieses File im heruntergeladenen Telnet Client funktioniert es.
Ich werde robot.key als anhang beifügen.
Deshalb würde mich interessieren was dieses File ändert.

03.11.2010 - 14:22 Uhr

Hi Leute
Habe einen TelnetClienten. Ich kann mich damit mit dem Server verbinden und befehle senden. Versuche ich aber die Tast F10 zu senden bekomme ich unrecognized Command zurück.

im *.key file eines anderen TCP CLienten der funktioniert steht

N VK_F10 VT_F15

Deshalb habe ich versucht einfach den string VT_F15 zu senden nur wie schon gesagt kommt der Fehler.
Muss ich VT_F15 irgendwie besonders formatieren oder überhaupt anders übertragen?

28.09.2010 - 23:07 Uhr

Hi Leute
Ich habe im WPF ein Binding eines Expander Headers

<Expander Name="ex_config" Grid.Column="0" Grid.ColumnSpan="8" Grid.Row="8" Grid.RowSpan="1" Header="{Binding Path=Config}">

Ändere ich den Text des Headers funktioniert das auch bis auf das Zeichen ''.
z.B. sage ich Config = "DSC
" darauf steht im WPF Fenser nur "DSC".
Habe es mit einem Label versucht. Lieferte aber das selbe Ergebnis.

Wie sage ich dem Binding das es '_' ausgeben soll?

22.09.2010 - 14:27 Uhr

danke
mfg bensch

22.09.2010 - 12:15 Uhr

hab ich schon gesehen aber das kann doch nicht die lösung sein vs2008 zu installieren

22.09.2010 - 12:04 Uhr

Deshalb habe ich eben geschrieben, dass ich mich damit kaum auskenne wie kann ich da die unterschiede erkennen?
Achja und ich bin jetzt doch über eine Lösung gestolpert: Ich habe im *.vcxproj die Zeile

 <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> 

eingfügt.
Jetz steht auch framework 3.5 im Property fenster nur bekomme ich einen anderen fehler: error MSB8009: .NET Framework 2.0/3.0/3.5 target the v90 platform toolset. Please make sure that Visual Studio 2008 is installed on the machine.

Habe danach auch diese auf v90 geändert macht aber keinen Unterschied.
Muss ich jetzt vs2008 installieren oder teile davon. Oder gibt es da irgendwelche lösungen dafür?

22.09.2010 - 10:31 Uhr

Hi Leute ich heibe ein Problem bei dem ich mich so gut wie garnicht auskenne.
Ich muss ein Plugin für acad programmieren. Für einen Teil meines Programms habe ich eine existierende Lösung gefunden, die jedoch nur für autocad 2009 funktioniert und ich brauche acad 2011(dieses jedoch versteht nur .net framework 3.5).

http://through-the-interface.typepad.com/through_the_interface/2009/03/exposing-autocads-properties-palette-functionality-to-net---part-2.html

Deshalb habe ich versucht das projekt mit den DLLs für acad 2011 mit .net3.5 zu compilieren.
Leider ist eines der Projekte ein C++ projekt. Deshalb schreibt visual studio 10 beim hinzufügen des projekts zu den referenzen, dass dieses projekt ein .net4.0 projekt ist und nicht verwendet werden kann.

Wenn ich bein C++ projekt auf properties gehe steht da auch Targeted framework: .NetFramework,Version=v4.0
Wie kann ich das auf .net Framework 3.5 umstellen?

21.09.2010 - 13:24 Uhr

Jap das war sowiso das nächste das ich in angriff genommen hätte

21.09.2010 - 13:16 Uhr

Wies aussieht führt kein weg um DynDNS deshalb werde ich mein Problem mit DynDNS lösen.

Danke nochamal für deine Hilfe

Was du dir auch mal ansehen könntest (Stoff für Forgeschrittene) ist HolePunching.

Ok auch dir danke werde mal sehen was ich schaffe 😃.

mfg Bensch

21.09.2010 - 13:02 Uhr

Danke
Von dynDNS habe ich schon gehört habe auch schon gelesen (habe mich nur oberflächlich damit befasst da oft davon abgeraten wurde).
Also müsste sich im prinzip jeder(oder zumindest einer der Chatpartner) bei DynDNS anmelden um mein ChatProgramm zu verwenden.

Ich kenne mich mit netzwerk noch nicht recht gut aus deshalb auch meine Frage stellt dynDNS ein sicherheitsrisiko dar, da es ja dann ganz leicht geht auf einen Computer zuzugreifen?

21.09.2010 - 12:43 Uhr

Hi Leute
Ich möchte zur Übung eine kleine Chatanwendung programmieren, die ohne Server und übers Internet funktioniert. Ich habe mich schon etwas in Sockets eingelesen.
Leider weiß ich die IP-Adress des Partners mit dem ich kommunizieren möchte nicht, weil sie sich spätestens nach 24h(ich habe gelesen, dass nach 24 stunden ein zwangsreconnect vom Internetanbieter erfolgt) ändert.

  1. Somit meine Frage ist so ein Chatprogramm ohne server überhaupt möglich?
  2. Wenn ja, funktioniert das mit sockets und wie bekomme ich die IP-Adresse meines ChatPartners?
  3. Mit welchen Themen sollte ich mich eventuell noch befassen?
07.09.2010 - 13:31 Uhr

Hi Leute
Ich arbeite gerade an einem Projekt bei dem man aus AutoCAD gezeichnete Formen auslesen muss.
Habe leider zuvor noch nie mit der C# Schnittstelle von Autocad gearbeitet.
Deshalb möchte ich fragen ob jemand ein paar Tutorials für diese Schnittstelle weis.

05.09.2010 - 20:55 Uhr

Könntet ihr mir bitte noch sagen ob es für einen Editor mit TextHighlighting noch eine andere möglichkeit gibt als mit einer RichTextbox zu arbeiten, da die RichTextbox nach ein paar Befehlen in einem Event schon zu ruckeln beginnt.

05.09.2010 - 14:32 Uhr

OK danke mal mein Problem ist nur ich möchte das mit wpf machen und die meisten brauchbaren lösungen die ich bis jz fand sind mit windows forms
und bei windows forms gibt es ja SelectionColor und so

05.09.2010 - 10:32 Uhr

Hi Leute
Ich versuche gerade einen Editor mit Syntaxhighlighting in WPF zu schreiben.
Dabei verwende ich das TextChanged Event einer RichTextBox.
Nach auftreten des Events suche ich mir die Start und endPosition des "aktiven" worts und färbe es in der Gewünschten farbe ein.
Mein Problem ist nur wenn ich z.B.: string eintippe wird das Wort blau gefärbt. Gebe ich string; ein wird string und der strichpunkt blau gefärbt.
Ich denke dieser Fehler tritt auf weil das TextChanged Event auftritt bevor der neue Text eingefügt wird.
Daher meine Frage gibt es ein Event das nach der Änderung des Texts auftritt oder gibt es dafür eine bessere Lösung?
mein Code im Event:


private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
        {
            TextPointer cursorPosition = TextBox.Selection.Start;
            int offset = TextBox.Document.ContentStart.GetOffsetToPosition(cursorPosition);
            int i = offset;
            TextPointer wordStart = TextBox.Document.ContentStart;
            TextPointer wordEnd = TextBox.Document.ContentStart;
            this.GetWord(i, ref wordStart, ref wordEnd);
            string myText = new TextRange(wordStart, wordEnd).Text;
            Color color = GetColor(myText);
           
            TextRange range = new TextRange(wordStart, wordEnd);
            range.ApplyPropertyValue(TextElement.ForegroundProperty, new SolidColorBrush(color));
}

30.08.2010 - 15:01 Uhr

Toll danke
nur wo muss ich das Eingeben bei mir kommt immer FolderPath doesn´t exists

30.08.2010 - 14:51 Uhr

Ich verwende in meinen UnitTests ReferencePaths.
d.h.: Properties/Reference Paths wurde ein Referenzordner angegeben in dem sich die benötigten Datein für meinen UnitTest befinden.
Mache ich nun einen Check in und löse einen Build aus, findet der BuildServer den ReferenzPfad natürlich nicht da auf seiner Festplatte kein solches Verzeichnis vorhanden ist.
Wie sage ich dem BuildServer von welchem Pfad aus er die Referenzen verwenden soll?

30.08.2010 - 11:41 Uhr

Tut mir leid meine Frage war etwas unglücklich formuliert.

Ich möchte mein erhaltenes Objekt durch Subtraktionen verschiedener Geometrien von einem Rechteck beschreiben. (das bedeutet die Differenz und der Minuend ist gegeben)
Nur stellen sich hier nun die Fragen

  1. welche Geometrien sind Sinnvoll
  2. sollte ich versuchen Radien zu erkennen und sie extra zu beschreiben, da ich so wenig wie möglich viele Unterteilungen haben möchte (wenn ja wie erkenne ich solche Radien)
  3. gibt es irgendwelche bekannten algorithmen
30.08.2010 - 11:29 Uhr

Das bild zeigt eigentlich nur zwei beispiele für das Ergebnis. Wie auf meinem unten gezeigten Bild sollte es in Wirklichkeit ablaufen.

30.08.2010 - 08:51 Uhr

Hi Leute
Ich bin mir jetzt nicht sicher aber ich glaube AUTOCAD beschreibt ein objekt mit punkten, die in der Umlaufreihenfolge gespeichert sind.
Jedenfalls möchte ich dieses Drahtmodell, dass ich bekomme in ein Boolsches Modell umwandeln (siehe Zeichnung).
Nur Leider habe ich keinerlei Anhaltspunkte oder Ideen wonach ich suchen muss.
Weiß jemand Algorithmen oder Anhaltspunkte zu diesem Thema?

30.08.2010 - 08:39 Uhr

Gut danke einmal werde mich mal etwas mit java befassen

30.08.2010 - 08:07 Uhr

Habe ich mit JAVA irgendwelche Einschränkungen gegenüber anderen Programmiersprachen wie Qt oder so?

30.08.2010 - 07:45 Uhr

Ich hätte noch kurz eine Frage
Welche programmiersprache könntet empfehlt ihr mir um mein handy zu programmieren?

29.08.2010 - 21:24 Uhr

Hi Leute hätte frage
Ich möchte mein Nokia x6 mit C# programmieren. Habe dazu auch etwas gefunden wie man das anstellen könnte und zwar mit Net60 von RedFiveLabs.
Nur leider kann ich schon seit mehreren Tagen Keine verbindung zur RedFiveLabs Seite herstellen.
Weiß jemand ob es RedFiveLabs überhaupt noch gibt oder wie ich an das Tool komme um mein Handy zu programmieren.
Oder gibt es noch andere sinnvolle möglichkeiten mein handy mit C# zu programmieren?

24.08.2010 - 15:42 Uhr

Ok das dachte ich mir schon nur wie bekomme ich die item position bzw. welche item position. Ich habe ja etwas gelöscht und nicht hinzugefügt.

24.08.2010 - 15:35 Uhr

Hi Leute
habe irgendwo mal eine Multithreadingfähige Observable Collection gefunden und verwende dies in einem Projekt.
Der nachteil bei dieser Collection ist, dass bei einem Remove event nur eine NotifyCollectionChangedAction.Reset aufgerufen wird.
Ich möchte aber eine NotifyCollectionChangedAction.Remove mit dem gelöschten Wert bekommen.
deshalb sieht mein Code für remove so aus


public bool Remove(T item)
        {

            if (Thread.CurrentThread == dispatcher.Thread)

                return DoRemove(item);

            else
            {

                var op = dispatcher.BeginInvoke(new BoolMethodInvoker(DoRemove), item);

                if (op == null || op.Result == null)

                    return false;

                return (bool)op.Result;

            }

        }



        private bool DoRemove(T item)
        {

            sync.AcquireWriterLock(Timeout.Infinite);

            var index = collection.IndexOf(item);

            if (index == -1)
            {

                sync.ReleaseWriterLock();

                return false;

            }

            var result = collection.Remove(item);
            
            if (result && CollectionChanged != null)

                CollectionChanged(this, new

                    NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, item));

            sync.ReleaseWriterLock();

            return result;

        }

Ich habe im MVVM ein normales event im datamodel angemeldet, dass so aussieht


this._datamodel.Nodes.CollectionChanged += (s, e) =>
            {
                if (e.Action == NotifyCollectionChangedAction.Add)
                    this.Nodes.Add(e.NewItems[0] as Node);
                if (e.Action == NotifyCollectionChangedAction.Reset)
                {
                    this.Nodes.Clear();
                }
                if (e.Action == NotifyCollectionChangedAction.Remove)
                {
                    this.Nodes.Remove(e.OldItems[0] as Node);
                }
            };

und eine PropertyChangedEvent, dass die Collection mit meinem View verbindet.

wird nun das event ausgelöst auf dem das PropertyChangedEvent angemeldet ist bekomme ich eine InvalidOperationException (Collection Remove event must specify item position.).

Wie muss ich das event auslösen damit ich diese Exception verhindere?

03.08.2010 - 13:48 Uhr

ok ich probiers mal

nur so eine frage am rande

das ist mein aktueller XAML Code


<DockPanel Grid.Column="1" Grid.Row="2" Name="vb_Origin" Grid.RowSpan="6" Grid.ColumnSpan="2">
            <Viewport3D x:Name="vp_Origin">
                <Viewport3D.Camera>
                    <PerspectiveCamera x:Name="camera" FarPlaneDistance="50"
                                     NearPlaneDistance="0" LookDirection="0,0,-10" UpDirection="0,1,0"
                                     Position="0,-4,5" FieldOfView="45" />
                </Viewport3D.Camera>
                <ModelVisual3D x:Name="model">
                    <ModelVisual3D.Content>
                        <Model3DGroup x:Name="_model">
                            
                            <AmbientLight Color="Gray" />
                            <DirectionalLight Color="White" Direction="-5,-5,-7" />
                        </Model3DGroup>
                    </ModelVisual3D.Content>
                </ModelVisual3D>
            </Viewport3D>
        </DockPanel>

Ich habe am DockPanel ein MouseMove Event im Code behind angemeldet

ist das von c# seite her so gewollt, dass bei nicht einstellen eines Backgrounds im Dockpanel das MouseMoveEvent nur am dargestellten Model3D funktioniert oder ist das ein Bug?

Also im angehängten bild nur auf der roten Fläche

03.08.2010 - 10:44 Uhr

Ich arbeite mit MVVM habe dazu ein Binding einer Model3DGroup gemacht, dass so aussieht


            <Viewport3D x:Name="vp_Origin">
                <Viewport3D.Camera>
                    <PerspectiveCamera x:Name="camera" FarPlaneDistance="50"
                                     NearPlaneDistance="0" LookDirection="0,0,-10" UpDirection="0,1,0"
                                     Position="0,-5,6" FieldOfView="30" />
                </Viewport3D.Camera>
                <ModelVisual3D >
                    <ModelVisual3D.Content>
                        <Model3DGroup>
                            <Model3DGroup x:Name="_originModel" Children="{Binding Path=OriginModel}" />
                            <AmbientLight Color="Gray" />
                            <DirectionalLight Color="White" Direction="-5,-5,-7" />
                        </Model3DGroup>
                    </ModelVisual3D.Content>
                </ModelVisual3D>
            </Viewport3D>


private Model3DGroup _originModel;
        public Model3DGroup OriginModel
        {
            get { return _originModel; }
            set 
            {
                if (this._originModel != value)
                {
                    this._originModel = value;
                    OnPropertyChanged("OriginModel");
                }
            }
        }
        

Meinem Origin Model füge ich neue element so hinzu

Material material = new DiffuseMaterial(new SolidColorBrush(GetColor(quality)));
            TriangleGeometry triangle = new TriangleGeometry();
            this.OriginModel.Children.Add(triangle.Create(p0, p1, p2, material));

wobei die Klasse triangle eine Form aus meiner 3D library übergibt.

Nur Leider Funktioniert dieses Binding nicht.
Daher meine Frage ist das Binding so wie es realisiert ist überhaupt möglich. Wenn nein gibt es andere möglichkeiten meinen Viewport3D an das ViewModel zu binden

30.07.2010 - 10:59 Uhr

Ich habe in meinem WPF eine ListBox verwendet nun möchte ich ein Binding mit SelectedItems machen nur leider habe ich noch keine Lösung dazu gefunden.

Gibt es eine Möglichkeit um SelectedItems zu Binden?