Laden...

Forenbeiträge von SeeQuark Ingesamt 946 Beiträge

21.06.2009 - 22:21 Uhr

Das Problem ist, dass die Start-Form das Standardfenster ist.
Und wenn das geschlossen wird, wird das ganze Programm geschlossen.

Abhilfe schaffst du, wenn du im Program bei Application.Run(new Form2()); (// oder wie das aussieht){green} nur Application.Run(); schreibst.
Dann musst du dir sozusagen einen FormManager bauen. Und das Programm mit Application.Exit() beenden.

mfg
SeeQuark

21.06.2009 - 20:27 Uhr

Zum Code von Andybritten: Ich würde warten, bis der Prozess zu Ende ist und erst dann den Text auslesen 😉

mfg
SeeQuark

20.06.2009 - 14:31 Uhr

Müsste eigentlich ganz einfach mit dem WebClient gehen: WebClient.DownloadString
(Kann es jetzt gerade nicht testen)

// EDIT: Ja, es geht

using (WebClient client = new WebClient())
{
	string s = client.DownloadString("http://path/to/the/text.txt");
	Console.WriteLine(s); // Oder was auch immer
}

mfg
SeeQuark

19.06.2009 - 16:48 Uhr

Vermutlich ist das Programm nicht richtig portiert.
Bspw. weil du nicht alle benötigten Files oder Dlls mitgeschickt hast.
Welche Exception kommt denn (beim Debuggen)?

Bei mir gehen nämlich alle Programme einwandfrei.

btw: Visual C# 2008 ist eine IDE

mfg
SeeQuark

15.06.2009 - 21:08 Uhr

[FAQ] Was bedeutet das @ (=at) vor String-Literalen?

Jedenfalls interpretiert das Regex-Lab :::{style="color: darkred;"}\"){darkred} bzw. :::{style="color: darkred;"}\n){darkred} nicht als :::{style="color: darkred;"}"){darkred} und Zeilenumbruch (vermute ich jetzt mal).

mfg
SeeQuark

14.06.2009 - 20:04 Uhr

Ich kenne die Lib jetzt nicht, aber eventuell fehlt eine Grössenangabe.

mfg
SeeQuark

13.06.2009 - 19:14 Uhr

Imho ist das unmöglich (ganz sicher bin ich aber nicht).
Wenn du den TargetType auswählst, gilt das nur für die angegebene Klasse (keine Unterklassen).
Bleiben dir nur noch die benannten Styles übrig.

Eine andere Möglichkeit wäre, den Style im Code aus den Resourcen auszulesen und dann per Reflection auf alle referenzierten Control-Typen zu setzen.

mfg
SeeQuark

13.06.2009 - 13:20 Uhr

Nur wenn man eine ViewBox verwendet. Das kann der Designer nicht.
Mit dem Designer von VS2010 sieht man sie aber.

mfg
SeeQuark

13.06.2009 - 12:02 Uhr

hab ein Viewbox ausprobiert. Genau das selbe Verhalten

Eigentlich müsste es funktionieren.

Kommt halt drauf an, was du unter "proportional" verstehst

<Viewbox> <!-- ev. noch Stretch="Fill" -->
    <Grid>
        <Rectangle Name="rectangle1" Stroke="Black" />
        <Image FlowDirection="LeftToRight" Margin="276,158.591,282,170.591" Name="Image1" Panel.ZIndex="0" Source="bild.jpg" Stretch="Uniform" StretchDirection="Both" />
        <Image FlowDirection="LeftToRight" Margin="185,223.18,517.748,222.41" Name="image2" Panel.ZIndex="0" Source="bild.jpg" Stretch="Uniform" StretchDirection="Both" Grid.IsSharedSizeScope="False" />
        <Image FlowDirection="LeftToRight" Margin="510.013,223.59,193,222.41" Name="image4" Panel.ZIndex="0" Source="bild.jpg" Stretch="Uniform" StretchDirection="Both" />
        <Image FlowDirection="LeftToRight" Margin="99,245.796,624,241.398" Name="image3" Panel.ZIndex="0" Source="bild.jpg" Stretch="Uniform" StretchDirection="Both" />
        <Image FlowDirection="LeftToRight" Margin="618,245.796,105,241" Name="image5" Panel.ZIndex="0" Source="bild.jpg" Stretch="Uniform" StretchDirection="Both" />
    </Grid>
</Viewbox>

Eventuell könntest du auch noch :::{style="color: darkred;"}Stretch){darkred}=&quot;Fill&quot; angeben. Das wäre dann aber in einem strengeren Sinne nicht mehr proportional.

mfg
SeeQuark

13.06.2009 - 10:59 Uhr

Imho müsste folgendes funktionieren:

string s = "London 01-05-2008 Bild200";
int start = s.IndexOf(' ') + 1, end = s.IndexOf(' ', start);
DateTime dateTime = DateTime.Parse(s.Substring(start, end - start));

Vorausgesetzt allerdings, dass der String wirklich immer so aufgebaut ist.
Ansonsten könntest du dich auch mit RegEx bemühen.

mfg
SeeQuark

13.06.2009 - 10:48 Uhr

Setzt das Grid (oder was auch immer) in eine Viewbox.

mfg
SeeQuark

11.06.2009 - 13:42 Uhr

Wie macht es wohl eine LinkedList<>? Die stellt keinen Indexer zur Verfügung.
mfg
SeeQuark

11.06.2009 - 13:40 Uhr

Sehr interessant 👍
Bis ich die ersten 3 Teile gelesen habe, ist das Beispiel sicher schon fertig.

(BTW &quot;Why English&quot;: Deutsch wäre mir lieber gewesen... Aber mit Englisch kann ich mich auch abfinden.){gray}

mfg
SeeQuark

11.06.2009 - 13:34 Uhr

@itstata: Das ist nicht bei allen IEnumarables so. Oder man kann sich nicht immer darauf verlassen.

MoveNext() gibt null zurück

Es gibt false zurück 😉 Siehe IEnumerator.MoveNext-Methode.

mfg
SeeQuark

06.06.2009 - 21:53 Uhr

und ein falsches binding muss also nicht immer ein compier error geben Das ist mir klar. Aber :::{style="color: red;"}Source){red}=({settings}){darkred} dürfte als Syntax Error durchgehen.
Theoretisch könnte es zwar richtig sein (wenn der Default-Namespace eine MarkupExtension namens "settings" hat), aber in diesem Ausschnitt ist das nicht so.

Wenn hingegen nur der Path falsch ist, kann man das nur indirekt feststellen.

mfg
SeeQuark

06.06.2009 - 17:36 Uhr

Was ist "settings"? Ist das eine Resource, eine DependencyProperty, der DataContext oder etwas anderes?

Bei einer Resource kannst du :::{style="color: red;"}Text){red}=&quot;({DynamicResource settings}){darkred}&quot; setzen,
bei einer DependencyProperty musst du im Binding noch :::{style="color: red;"}RelativeSource){red}=({RelativeSource FindAncestor, AncestorType={x:Type Window}}){darkred} festlegen,
und beim DataContext nur den PropertyName angeben.
(eig. das Gleiche wie Mr Evil gesagt hat)

Bei dem DataContext ist noch wichtig, dass dieser INotifyPropertyChanged implementiert (oder von DependencyObject ableitet, aber das ist unüblich).

Und noch etwas: der Mode ist bei einer TextBox automatisch auf TwoWay gesetzt.

@MrEvil:

das problem ist das er "settings" vermutlich nicht findet

Der Code von Jörg müsste imho einen CompilerError geben.

mfg
SeeQuark

05.06.2009 - 17:10 Uhr

Du musst den Button als Children deines Grids definieren.
Mit ClipToBounds="True" werden alle Controls abgeschnitten.

Benötigst du diese Eigenschaft auf False, musst du wieder mit Tricks arbeiten. Das einfachste wäre dann imho, ein neues Grid (oder besser ein Canvas) zu erstellen, mit dem du es dann durchführst.

mfg
SeeQuark

05.06.2009 - 16:53 Uhr

Ich mag solche Fenster auch nicht.

Ich würde das PriorityBinding nehmen, mit gesetztem Binding IsAsync=(&quot;True&quot;){darkred}. So wird automatisch asyncron geladen.
Als Fortschrittsanzeige kannst du dann eine ganz einfache ProgressBar in der UI verwenden.

Generell darfst du in einem anderen Thread als dem in der GUI nicht auf die Steuerelemente zugreifen.
[FAQ] Controls von Thread aktualisieren lassen (Control.Invoke) kann dir in diesem Thema weiterhelfen.
Ein Backgroundworker umhüllt das Ganze, damit man sich damit nicht beschäftigen muss.

mfg
SeeQuark

03.06.2009 - 16:24 Uhr

Noch was: Gibt es für DX auch GUIs?

Sicher: WPF (Das Unterforum dafür: GUI: WPF und Silverlight).

Ich glaube SlimDX ist im Gegensatz zu XNA auf Multimedia Anwendung optimiert.

SlimDX ist, wie gesagt, ein managed DirectX-Wrapper.

mfg
SeeQuark

03.06.2009 - 12:27 Uhr

Dann bleibt dir nur noch, die Progressbar selber zu zeichnen; bzw. die aus den Links zu verwenden.

mfg
SeeQuark

03.06.2009 - 11:46 Uhr

Schau mal da: [Artikel] Regex-Tutorial

Du kannst es geschickter machen, wenn du die Abkürzung für "Zahl" verwendest.
Die Anzahl bekommst du mit dem entsprechenden Quantoren hin.

mfg
SeeQuark

03.06.2009 - 11:34 Uhr

ich denke mal der Umfang wird relativ groß sein, bis man das zum Laufen bekommt oder?

Du musst ja nicht die gesamte Application umstellen. Mithilfe der Interopabilität dürfte das kein Problem sein.

Am Anhang ist ein kleines Beispiel, wie das funktionieren könnte.

mfg
SeeQuark

02.06.2009 - 21:56 Uhr

Wenn du Managed DirectX meinst ([Artikel] Managed Direct3D Tutorial): Das wird imho schon seit .NET 2.0 nicht mehr unterstützt.
Der indirekte Nachfolger ist SlimDX, eigentlich ein direkter Wrapper von DirectX. Ausserdem unterstützt er schon DirectX 11, wird also ziemlich sicher weiterentwickelt.

mfg
SeeQuark

02.06.2009 - 20:43 Uhr

Wenn es dir so wichtig ist, kannst du ja auch das Control von WPF verwenden (hosten). Da WPF alle Controls selber zeichnet, ist ein kein Problem die Vordergrundfarbe zu setzen.
Da gehen alle Vorder-/Hintergrundfarben und es ist auch mit XP kompatibel.
Generell ist für verschiedene Styles WPF besser geeignet

mfg
SeeQuark

02.06.2009 - 20:38 Uhr

Wir produzieren dir keine Pattern 😉

Die umschliessenden "/" und "/" hast du ja richtig erkannt (nur noch das Escape-Zeichen vor dem Slash muss weg).

Für "alle Zeichen" musst du aber nicht alle dir bekannten auflisten.
Mir fällt zwar nur grad ein "\d\D" zu machen (hab da grad ein Blackout), aber jedenfalls kannst und solltest du diese komplett ersetzen.
Ich meine [ !{}""?'\#:|[]^+=öäüÖÄÜ=&;,*@()%a-zA-Z0-9/\._~-]

EDIT: Das wichtigste habe ich vergessen: Statt dem "*" musst du ein "+?" einsetzen.
Mehr dazu siehst du im [Artikel] Regex-Tutorial, bzw. testen kannst du im On-the-fly Regex-Tester: Regex-Lab.

mfg
SeeQuark

02.06.2009 - 12:16 Uhr

Ändere den UpdateSourceTrigger auf PropertyChanged.

mfg
SeeQuark

29.05.2009 - 12:41 Uhr

Hm auch wenn ich den Code nicht ganz verstehe, wunder ich mich wieso diese Zeilen die Farben einer ProgessBar ändern können ohne das jemals irgendwo ne Color zugewiesen wird 😛

Du musst die Property "Style" setzen.

Das BS ab Vista spezielle, vordefinierte "Styles". Eben "Normal" (grün), "Error" (rot), "Paused" (gelb) und einen blauen, der aber sehr schwierig zu kriegen ist.

sendMessage(Handle, PBM_SETSTATE, *der gewünschte Style*, 0);

Da wird dieser Style dem BS mitgeteilt.

Andere Farben kannst du nicht über die normale Progressbar bekommen.

Dazu brauchst du dann spezielle Controls von Code-Project. Zum Beispiel:

mfg
SeeQuark

29.05.2009 - 12:06 Uhr

Unter Windows Vista/Se7en (nur Se7en gestestet) geht das folgende:

class MyProgressBar : ProgressBar
{
    protected override void OnHandleCreated(EventArgs e)
    {
        base.OnHandleCreated(e);
        State = State;
    }

    const int PBST_NORMAL  = 0x0001,
              PBST_ERROR   = 0x0002,
              PBST_PAUSED  = 0x0003,

              PBM_SETSTATE = 0x0410; // WM_USER + 16

    [DllImport("user32.dll", CharSet = CharSet.Auto, EntryPoint = "SendMessage")]
    static extern IntPtr sendMessage(IntPtr hWnd, int msg, int wParam, int lParam);

    public enum States { Normal, Error, Paused }
    public States State
    {
        get { return progressState; }
        set
        {
            progressState = value;
            sendMessage(this.Handle, PBM_SETSTATE, getStateConst(value), 0);
        }
    }
    States progressState = States.Normal;

    int getStateConst(States State)
    {
        switch (State)
        {
            case States.Normal: return PBST_NORMAL;
            case States.Error:  return PBST_ERROR;
            case States.Paused: return PBST_PAUSED;
            default:            return PBST_NORMAL;
        }
    }
}

mfg
SeeQuark

26.05.2009 - 18:00 Uhr
string.Compare("abc", "ABC", true);

mfg
SeeQuark

26.05.2009 - 17:42 Uhr

Beim Titel "CheckBox in ListView" und deinem Bild kommt mir die Frage: Warum verwendest du nicht das WPF Toolkit? Da ist ein Datagrid drinnen.

<DataGrid xmlns="http://schemas.microsoft.com/wpf/2008/toolkit"
          xmlns:w="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
          ItemsSource="{w:Binding}" ColumnWidth="*"/>

Da das sehr kurz sein soll, hier die Quick'n'Dirty-Lösung über den Kontruktor:

ObservableCollection<RegionProperty> source = new ObservableCollection<RegionProperty>();
Random r = new Random();
for (int i = 0; i < 10; i++)
    source.Add(new RegionProperty(i.ToString("00") + " Test", r.Next(2) == 0, r.Next(2) == 0));
DataContext = source;

Die obligatorische Klasse "RegionProperty" (ich hasse private Member mit Underscore, genauso wie "alle privaten Member oben"), darum neu:

class RegionProperty : INotifyPropertyChanged
{
    public RegionProperty() : this("Model", true, false) { }
    public RegionProperty(string name, bool canRead, bool canReadWrite)
    {
        Name         = name;
        CanRead      = canRead;
        CanReadWrite = canReadWrite;
    }

    public string Name
    {
        get { return name; }
        set
        {
            name = value;
            Change("Name");
        }
    }
    string name;

    public bool CanRead
    {
        get { return canRead; }
        set
        {
            canRead = value;
            Change("CanRead");
        }
    }
    bool canRead;

    public bool CanReadWrite
    {
        get { return canReadWrite; }
        set
        {
            canReadWrite = value;
            Change("CanReadWrite");
        }
    }
    bool canReadWrite;

    public event PropertyChangedEventHandler PropertyChanged;
    protected virtual void OnPropertyChanged(PropertyChangedEventArgs e)
    {
        var temp = PropertyChanged; // <== @Mr Evil: Ohne das ist deine Variante nicht "Thread-Save"
        if (temp != null)
            temp(this, e);
    }
    protected void Change(string propertyName)
    {
        OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
    }
}

Das Datagrid merkt automatisch, ob man schreiben kann. Die erste Spalte ist readonly.
Ausserdem hast du Star-Sizes.

Was noch dazukommt:


<CheckBox IsChecked="{Binding CanRead}" />
<!-- ... -->
<CheckBox IsChecked="{Binding CanReadWrite}" />

Dieser unflexible XAML-Code verschwindet auch noch.

mfg
SeeQuark

26.05.2009 - 13:34 Uhr

Ich glaube, du interpretierst das falsch:

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MinWidth-Test" Width="300" Height="300">
    <Grid ShowGridLines="True" Background="DarkBlue" >
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <TextBox MinWidth="100" Grid.Column="1" Grid.Row="1" IsReadOnly="True"
                 Text="{Binding ActualWidth, RelativeSource={RelativeSource Self},
                                Mode=OneWay, StringFormat=Breite: \{0:0\}}"/>/>
    </Grid>
</Window>

Die Breite der TextBox ist nie unter 100. Was dich halt stört, ist, dass die TextBox abgeschnitten wird.
Das liegt daran, dass die einzelnen Zellen eigentlich wieder einzelne Controls sind. Natürlich mit ClipToBounds auf True. Und umstellen kann man das imho nicht.

Ich würde einfach keinen Grid verwenden, sonder eher das DockPanel verwenden (grobes Layout).
Oder die Elemente halt in einem Grid ohne Collumns anordnen.
EDIT: Oder einfach die MinWidth der Collumn-Definition setzen.

mfg
SeeQuark

24.05.2009 - 21:32 Uhr

Warum nimmst du nicht gleich den XamlWriter?

mfg
SeeQuark

20.05.2009 - 22:04 Uhr

Setzte es doch in ein DockPanel

<DockPanel>
    <Button Width="100" DockPanel.Dock="Right">OK</Button>
    <TextBox>hallo</TextBox>
</DockPanel>

mfg
SeeQuark

20.05.2009 - 11:29 Uhr

Ich habe auch mal welche gemacht, die die Anforderungen entsprechen würden.
Das ausfahren geht sogar mit einer schönen Animation. Allerdings sind diese WPF.
Ich bin jetzt jedenfalls auf die Taskdialoge von Windows Vista umgestiegen. An diese kommt man optisch nicht so schnell ran.

@wizer: Dass in der Taskleiste nichts angezeigt wird ist ja klar. Mit ein bisschen WinApi kann man den Titel aber ausblenden, wie das zum Beispiel der Explorer von Vista macht.

mfg
SeeQuark

18.05.2009 - 18:33 Uhr
[PRE][^{]+|[^}]+}[/PRE]

So musst du nicht einmal über die Groups zugreifen, sondern kannst die Matches verwenden.

mfg
SeeQuark

17.05.2009 - 18:12 Uhr

Mir gefällt es eigentlich recht gut. Bei bestimmten Sachen ist WolframAlpha sehr praktisch.

  • Wenn du Börsen vergleichen willst, kannst du das ohne Probleme tun. Du erhältst schöne Diagramme, die sogar noch die Zukunft berechnen (simulieren).
  • Auch enthält es sozusagen eine Freeware-Version von Mathematika. Gleichungen mit mehreren Variablen und Potenzen stellen keine Probleme dar. Meistens sogar mit einer graphischen Darstellung. Umrechnungen werden auch mit Bravour gemeistert.
  • In Geographischen Sachen ist es auch genial. Die Weltkarte wirkt nicht überladen und kennt sogar kleinere Dörfer inkl. Einwohner.
  • Sogar Esswaren sind bekannt. Die Suche nach "Muffin" wird erstaunlich detailliert ausgeführt, hingegen wird bei "muffin fat" ganz oben das Resultat angegeben.

Dagegen fällt WolframAlpha in anderen Sachen meist ab. Es kennt beispielsweise nicht einmal Betriebssysteme.

Wenn man WolframAlpha gezielt nutzt, kann es imho schon sehr nützlich sein. Sei es als Taschenrechner oder als Lexikon. Du erhältst viel präzisere Antworten als bei Google/Wikipedia.

EDIT:

Naja wichtig ist ja das die richtige Antwort bei "The answer to life, the universe and everything" rauskommt

Input interpretation:
answer to life, the universe**:::

Result:
42
(according to Douglas Adams' Hitchhiker's Guide to the Galaxy)

mfg
SeeQuark

15.05.2009 - 16:00 Uhr

Nein, das geht nicht.

=, ., ?:, ->, new, is, sizeof, typeof - Diese Operatoren können nicht überladen werden.

Siehe Überladbare Operatoren (C#-Programmierhandbuch)

mfg
SeeQuark

14.05.2009 - 17:19 Uhr

Ich denke StringFormat, bzw. ContenStringFormat ist erst ab .net 3.5 SP1 verfügbar, das würde meine Situation erklären...

Stimmt, das wollte ich sagen 🤔.

Am Besten mal in die :rtfm: MSDN schauen: BindingBase.StringFormat-Eigenschaft

.NET Framework
Unterstützt in: 3.5 SP1, 3.0 SP1


  • Wie kann ich es erreichen, dass ich nicht nur "A", sondern "0xA" bekomme?
    Sollte das nicht schon so sein? (wegen {0:X})

Der Parameter entspricht exakt der string.Format-Methode.

Daher einfach: ":::{style="color: darkred;"}StringFormat){darkred}=0x\{0:X\}".
EDIT: Ein bisschen nach Lector, dafür richtig escaped 😄

mfg
SeeQuark

14.05.2009 - 14:17 Uhr

Das geht erst ab WPF mit .NET 3.5.
Falls es daran liegt, wäre ein Umstieg ratsam, da die Geschwindigkeit der WPF-Apps um bis zu 30% erhöht wird und andere Sachen dazu gekommen sind.

EDIT: Achso, bei meinem XAML-Code fehlt noch der "ElementName".

mfg
SeeQuark

14.05.2009 - 13:58 Uhr

Wobei das {} am Anfang nur in XAML nötig wenn gleich am Anfang ein Parameter kommt um den Compiler davon abzuhalten das {0:X} so ähnlich wie {Binding} oder {StaticResource} zu parsen.

Alternativ kannst du das auch "escapen":

<TextBox Text="{Binding meineZahl, StringFormat=\{0:X\}}"/>

mfg
SeeQuark

14.05.2009 - 12:33 Uhr

Es wurde vorerst zurückgestellt.
pdelvo arbeitet an seinem Htmlcp, maionaise immer noch beschäftigt.
Ich und markus111 haben dann auch aufgehört.

Der WPF MapEditor, sowie das Kartenformat (.pdmap) wurde dagegen schon fertiggestellt.
Zwar ist es jetzt nur eine komprimierte XML-Datei, aber sobald es weitergeht wird es die bewährte Mischung aus ZIP und XML sein (+ Bilder).

Die Verbindung über Skype steht immer noch, ist jetzt aber mit "offtopic" überflutet.
Wir sind alle aber überzeugt, später weiterzumachen.

mfg
SeeQuark

13.05.2009 - 22:02 Uhr

Diese Farbe kannst du leider nicht verändern. Find ich auch dumm.

It is entirely impossible in the current .NET releases (3.0 & 3.5 beta). The control is hardcoded to use the system setting... it doesn't look at the control template at all.

Hopefully this feature will be added in the next release after 3.5.

Zitat aus Selection Color of a TextBox (MSDN Community).

mfg
SeeQuark

13.05.2009 - 21:55 Uhr

Vermutlich meint winSharp93 die ClientSize-Eigenschaft.

Der Clientbereich eines Steuerelements entspricht den Begrenzungen des Steuerelements abzüglich der Nicht-Clientelemente, z. B. Bildlaufleisten, Rahmen, Titelleisten und Menüs.

Wenn du mit IntelliSence schon "Client" eintippst, dann siehst du vermutlich alle damit zusammenhängenden Eigenschaften.
Um die Funktionalität derselben zu erfahren, siehe :rtfm: MSDN.

mfg
SeeQuark

11.05.2009 - 21:42 Uhr

Das ist nicht ganz richtig...ClipToBounds wird von Window nicht geerbt...

Und ob es das erbt: von UIElement3D. Man kann es sogar in XAML setzen, nur bekommt man dann eine Exception, dass es unter einem Window nicht geht.


>
Ruft einen Wert ab, der angibt, ob der Inhalt dieses Elements (bzw. Inhalte aus den untergeordneten Elementen dieses Elements) so abgeschnitten werden soll, dass er der Größe des enthaltenden Elements entspricht, oder legt diesen fest. Dies ist eine Abhängigkeitseigenschaft. (Von
>
geerbt.)

Siehe MDSN: System.Windows.UIElement.ClipToBounds

was aber zu performanceeinbußen führen würde, wenn man das Fenster verschiebt.

Es gibt aus Sicht der Performanz viel Schlimmeres. Mich würde eher das Binding stören.
Ich würde es einfach so lösen, das geht am einfachsten.

Er löst nicht gerade dein Problem, aber vielleicht ist für dich noch dieser Artikel interessant: http://blogs.msdn.com/wpfsdk/archive/2008/09/08/custom-window-chrome-in-wpf.aspx bzw. http://code.msdn.microsoft.com/chrome.

mfg
SeeQuark

11.05.2009 - 20:37 Uhr

In WPF kann man bei der TextBox automatisch die Rechtschreibeprüfung einschalten.
Siehe Übersicht über TextBox bzw. SpellCheck-Klasse.
Erweitern lässt sich diese Rechtschreibprüfung imho leider nicht.

mfg
SeeQuark

09.05.2009 - 14:51 Uhr

Du kannst aber ganz einfach die klasse Programm mit dem StartupPath nehmen.
Siehe bspw: How to write custom Main method for a WPF application?
Die Standard-Main ohne Parameter kann man fast nicht gebrauchen.

mfg
SeeQuark

07.05.2009 - 12:58 Uhr

Der ist schon auf PropertyChanged.

Die UpdateSourceTrigger-Eigenschaft der
>
-Bindung ist auf PropertyChanged festgelegt.

(http://msdn.microsoft.com/de-de/library/system.windows.data.binding.updatesourcetrigger.aspx)

mfg
SeeQuark

06.05.2009 - 20:44 Uhr

Man kann aber Nullable verwenden. Bspw. auf bool? casten.

 bool  b1 = ((object)true) as bool;  // Sinnlos-Code ergibt Compiler Fehler
bool? b2 = ((object)true) as bool?; // Mit einem Nullable gibt es keinen Fehler

Es wird auch der richtige Wert ausgegeben.

In den FAQ wird erwähnt, dass die as Variante weniger Effizient wäre, was bei mir nicht der Fall war.

Vermutlich ist sie auch langsamer als das reine is. Es geht da imho auch nur darum, zu merken, ob die Variable vom Typ XY ist.
Im "Gesamtpacket" ist as aber schneller.

mfg
SeeQuark

06.05.2009 - 20:34 Uhr

Das ist irgendwo Geschmackssache. Generell würde ich aber auf MDI verzichten.
Das ist veraltet und imho unschön.
Ich kenne praktisch kein professionelles Programm, das das verwendet.

Dabei tritt oft das Problem [FAQ] Kommunikation von 2 Forms auf.
Wichtig vielleicht noch: Vorüberlegung zur Form2Form-Kommunikation: Programm-Design überdenken.

Ist jetzt aber subjektiv. Ich bin jedoch klar dagegen.

mfg
SeeQuark