Laden...

Forenbeiträge von ProGamer Ingesamt 660 Beiträge

22.06.2011 - 16:10 Uhr

versuch als ElementName mal LayoutRoot anzugeben und beim Path einfach mal ein "DataContext." vorhängen
also dass es so ausschaut


{Binding ElementName=LayoutRoot, Path=DataContext.MyProperty}

22.06.2011 - 15:31 Uhr

Hallo,

Svg2Xaml könnte was für dich sein

14.06.2011 - 14:19 Uhr

Ich fand den Film Gesetz der Rache ziemlich gut.
Da fragt man sich was man selbst in so einer Situation tun würde und vorallem wie weit man gehen würde...

14.06.2011 - 12:23 Uhr

Du könntest auch (wenn das ViewModel den Command beinhaltet und dieser dem
DataContext deiner View zugewiesen ist) folgendes machen:


<DataTemplate>
    <Button Content="O" 
                 Width="50" 
                 Command="{Binding ElementName=LayoutRoot, Path=DataContext.ShowTicketCommand}" DataContext="{Binding}" />
</DataTemplate>

02.06.2011 - 13:06 Uhr

hmm übersehe ich etwas? O.o

19.05.2011 - 15:06 Uhr

Hier ist ein Artikel bei CodeProject der dein Problem lösen dürfte

C# does Shell

19.05.2011 - 14:49 Uhr

um genauer zu wissen ob es die Temperatur der Graka ist dann teste deine GraKa mal
mit Funmark (Kantenglättung aus, Auflösung 1024x768, kein Fullscreen). Es kann auch
sein dass die Wärmeleitpaste mal erneuert werden muss.

Bei nem freund hat sich die GraKa immer bei zu viel Hitze abgeschaltet... Naja bei dem war auch der Lüfter der GraKa kaputt.

17.05.2011 - 12:00 Uhr

Du kannst auch die Language im XAML setzen

11.05.2011 - 10:03 Uhr

Auch schon versucht ElementName wegzulassen?

11.05.2011 - 09:57 Uhr

Ich gehe mal davon aus dass das VM bereits dem DataContext zugewiesen worden ist.
in dem Fall kannst du folgendes machen:


<Liste ItemSource="{Binding IrgendeineObersableCollectionSource}">
  <Template etc>
    <TextBox Property1="{Binding PropertyXY}" Property2="{Binding ElementName=LayoutRoot, Path=DataContext.Property Z}" />
  </Template etc>
</liste>

04.05.2011 - 16:10 Uhr

Hallo,

hast du schonmal einen Blick hier rein geworfen?

MVVM - Navigation

27.04.2011 - 13:44 Uhr

Also meinst du sowas wie Word es Integriert hat?
(Dort wird auch das Herunterfahren verhindert wenn noch ungespeicherte Daten vorhanden sind. Sobald der User dann eine Option gewählt hat wird heruntergefahren)

21.04.2011 - 15:41 Uhr

Du kannst dafür eine ObservableCollection<TabItem> verwenden. Einfach die Collection an die ItemsSource des Controls binden

Die Tabitems werden so generiert wie diese in der Collection auftauchen

21.04.2011 - 13:42 Uhr

Ich habe in der MSDN etwas hilfreiches gefunden

How to: Enable Optimistic Concurrency Checks

Danke an alle die geantwortet haben!

19.04.2011 - 13:25 Uhr

Vielen Dank an alle soweit

Da sind ja einige Stichworte zusammengekommen und die Empfehlungen scheinen in eine Richtung zu gehen.
Ich werde mal mit den DataSets und DataAdapter etwas herumexperemtieren und schauen was so bei rum kommt

19.04.2011 - 11:49 Uhr

Hallo zusammen,

was passiert eigentlich wenn ein Datensatz aus der Datenbank an zwei verschiedenen
Rechnern bearbeitet wird und die User nahezu gleichzeitig die Daten wieder in die
Datenbank speichern wollen?

Meine Überlegung ist dass der Datensatz der zuletzt bei der Datenbank ankommt auch
übernommen wird

Die zweite frage wäre was passiert wenn ein Benutzer einen Datensatz lädt und dann
seinen Rechner in den Ruhezustand schickt. Kann der Benutzer dann den Datensatz
wieder speichern? Muss man die Verbindung wieder neu aufbauen und die Daten
aktualisieren?

19.04.2011 - 11:10 Uhr

@malignate: danke für die Verwendungsmöglichkeit ^^

@iced-t89: Wie gesagt ich weiss nicht wofür man es gebrauchen kann da ja sogut wie alles über Bindings möglich ist.

Als ich mir den Code zusammengesucht hatte brauchte ich eine möglichkeit um vom DatePicker das CalendarClosed-Event im ViewModel zu verarbeiten. Mittlerweile ist dafür ein Converter im Einsatz.

19.04.2011 - 10:52 Uhr

Du solltest CL_Main in Usercontrol oder UIElement ändern.
Wenn du unbedingt sicherstellen musst dass die Liste da vorhanden sein muss im
Parameter dann erstelle ein Interface, definiere dort die Liste, Implementiere das
Interface in der CL_Main Klasse und verlange dieses Interface als Parameter
(public MyChildWindow(ICL_Main formMain)).

18.04.2011 - 12:05 Uhr

Ich scheine noch nicht die neueste Version von Thunderbird zu haben...

18.04.2011 - 11:13 Uhr

Wäre ein Converter nicht eine Lösung?

15.04.2011 - 12:23 Uhr

Beschreibung:
Hallo zusammen,

ich weiss nicht wofür das im MVVM nützlich sein sollte da man ja eigentlich alles mittels Bindings lösen kann, aber dennoch Poste ich mal eine Möglichkeit um einen Command mittels Event auszulösen

Wichtig ist dass vorher das Blend SDK für Silverlight Heruntergeladen und Installiert wird.

Ein Verweis auf die System.Windows.Interactivity (zu finden unter C:\Program Files (x86)\Microsoft SDKs\Expression\Blend\Silverlight\v4.0\Libraries) hinzugefügt wird


using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Interactivity;
using System.Reflection;
using System.Linq;

namespace EventToCommand
{
    public class EventToCommandCore : TriggerAction<DependencyObject>
    {

        #region DelegateCommands

        public static readonly DependencyProperty CommandParameterProperty =
            DependencyProperty.Register( "CommandParameter", typeof( object ), typeof( EventToCommandCore ), null );

        public static readonly DependencyProperty CommandProperty =
            DependencyProperty.Register( "Command", typeof( ICommand ), typeof( EventToCommandCore ), null );

        public static readonly DependencyProperty InvokeParameterProperty =
            DependencyProperty.Register( "InvokeParameter", typeof( object ), typeof( EventToCommandCore ), null );

        #endregion

        #region Properties And Fields

        public object InvokeParameter
        {
            get { return this.GetValue( InvokeParameterProperty ); }
            set { this.SetValue( InvokeParameterProperty, value ); }
        }

        public ICommand Command
        {
            get { return (ICommand)this.GetValue( CommandProperty ); }
            set { this.SetValue( CommandProperty, value ); }
        }

        public string CommandName{get; set;}

        public object CommandParameter
        {
            get { return this.GetValue( CommandParameterProperty ); }
            set { this.SetValue( CommandParameterProperty, value ); }
        }

        #endregion

        #region methods

        protected override void Invoke( object parameter )
        {
            this.InvokeParameter = parameter;

            if ( this.AssociatedObject != null )
            {
                ICommand Command = this.ResolveCommand();
                if ( Command != null && Command.CanExecute( this.CommandParameter ) )
                {
                    Command.Execute( this.CommandParameter );
                }
            }
        }

        private ICommand ResolveCommand()
        {
            ICommand command = null;

            if ( this.Command != null )
            {
                return this.Command;
            }

            var frmElement = (FrameworkElement)this.AssociatedObject;

            if ( frmElement != null )
            {
                object dtContext = frmElement.DataContext;

                if ( dtContext != null )
                {
                    PropertyInfo cmdPropertyInfo = dtContext.GetType().GetProperties( BindingFlags.Public | BindingFlags.Instance ).
                        FirstOrDefault(
                            c =>
                            typeof( ICommand ).IsAssignableFrom( c.PropertyType ) &&
                            string.Equals( c.Name, this.CommandName, StringComparison.Ordinal )
                            );
                    if ( cmdPropertyInfo != null )
                    {
                        command = (ICommand)cmdPropertyInfo.GetValue( dtContext, null );
                    }
                }
            }

            return command;
        }

        #endregion

    }
}


Das ganze kann dann folgendermaßen verwendet werden


<UserControl x:Class="DemoApp"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400"
             xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
             xmlns:cmd="clr-namespace:EventToCommand"
             xmlns:VM="clr-namespace:DemoApp.ViewModel"
             >

    <UserControl.Resources>
        <VM:DemoAppViewModel x:Key="DAVM" />
    </UserControl.Resources>
    
    <StackPanel x:Name="LayoutRoot" Background="White" DataContext="{StaticResource DAVM}">
                    <sdk:DatePicker Name="DatePickerControl"
                                    Margin="5"
                                    SelectedDateFormat="Short"
                                    IsDropDownOpen="False"
                                    SelectedDate="{Binding Path=DatePickerProperty, Mode=TwoWay}"
                           <i:Interaction.Triggers>
                            <i:EventTrigger EventName="SelectedDateChanged">
                                <cmd:EventToCommandCore Command="{Binding Path=SelectionChangedCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=InvokeParameter}" />
                            </i:EventTrigger>
                        </i:Interaction.Triggers>

                    </sdk:DatePicker>
                </StackPanel>

Im ViewModel könnte es dann Folgendermaßen aussehen:
(Nur Methoden definition)


        private void SelectionChangedExecute( object state )
        {
            if ( state is SelectionChangedEventArgs )
            {
                //Do Some Stuff
            }
        }

Wie gesagt ich habe keine Ahnung wofür man das brauchen sollte...

Schlagwörter: Event, Command, Silverlight

15.04.2011 - 11:45 Uhr

Hallo,

Also ich würde das Folgendermaßen lösen

ein ChildWindow erstellen, dessen CodeBehind erweitern


public DetailsChildWindow(IDetailsChildWindow ViewModel)
{
InitializeComponents();

this.Loaded += (s,e) =>
{
this.DataContext = ViewModel
};
}

dann ein passendes ViewModel erstellen


public Class DetailsChildWindowViewModel : IDetailsChildWindow
{
public DetailsChildWindowViewModel(object SelectedItem)
{
//Aktionen ausführen um Details des Items anzuzeigen
}
}

und um auf das DoppelClick reagieren zu können bietet sich ein EventsToCommand an auf dass du dann reagieren kannst.

Aber Vielleicht würde eine Master/Detail Ansicht dir ja genügen

14.04.2011 - 16:21 Uhr

Hallo,

ich weiss nocht ob du es noch brauchst aber ich bin grade hierrüber gestolpert
Vielleicht kannst du es ja gebrauchen

Silverlight Navigation With the MVVM Pattern

06.04.2011 - 10:24 Uhr

Hallo,

Füge beim SelectedItem ein Mode=TwoWay hinzu

30.03.2011 - 09:08 Uhr

Du hast dir das mit den Konvertern wohl nicht angesehen oder die anderen posts zu gemühte geführt...

Halte dein model einfach


 // Meine Variablen
        public bool Activated = false;
        public bool Launched = false;
        public bool OnNavigated = false;

        // Meine Brushes
        private Brush GreenBrush = new SolidColorBrush(Color.FromArgb(255, 26, 150, 26));
        private Brush RedBrush = new SolidColorBrush(Color.FromArgb(255, 167, 6, 6));

In deinem ViewModel muss die logik sein (INotifyPropertyChanged Implementieren)


public Brush BackgroundBrush
{
get{ return BrushState ? Model.GreenBrush : Model.RedBrush; }
}

private bool _BrushState;
public bool BrushState
{
get {return _BrushState;}
set{ _BrushState = value; RaisePropertyChanged("BackgroundBrush");}
}


In deiner View bindest du nun die Bool-Property an z.b. eine ComboBox (IsChecked)
und die Brush-Property an deinen Hintergrund!

Wenn du nun auch von verscheidenen Seiten auf diese BoolVariable zugreifen musst oder den Brush zugreifen musst dann verwende (ich weiss nicht der Beste weg) eine Static Property und lagere diese in eine BasisKlasse aus (am besten die Bool-Property).

in dem Nächsten VM könntest du dann folgendes machen


public SecondViewModel()
{
RefreshProperty();
}

private void RefreshProperty()
{
RaisePropertyChanged("BackgroundBrush");
}

29.03.2011 - 13:10 Uhr

Also ich denke mal dass es hiermit was zu tun hat

<ItemsControl ItemsSource="{Binding Path=Pages}" ItemTemplate="{StaticResource wizardStepTemplate}" Width="300"/>

Versuch das ItemsPanel anzupassen:

 
<ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
        <StackPanel Orientation="Horizontal"  VerticalAlignment="Top" />
    </ItemsPanelTemplate>
</ItemsControl.ItemsPanel>

29.03.2011 - 11:39 Uhr

Also wenn die Farbe nur durch den State beeinflusst werden soll dann deklariere in der ViewModelBase Klasse eine Property vom Typ Bool.
Binde diese Property an die Background-Property des Steuerelemntes und gib noch zusätzlich einen Converter an (IValueConverter als Stichwort, findeste genug im Internet)
Natürlich in der BaseClass nicht das INotifyPropertyChanged vergessen sonst bekommt die View die Änderung der Property nicht mit

29.03.2011 - 10:00 Uhr

Um die Usability zu steigern hab ich allerdings vor Seite für Seite in meiner App gleich aussehen zu lassen, da wären "globale" klassen stark vom Vorteil.

verstehe ich nicht ganz. mit der Style Klasse kannst du doch mit jeder View auf die Styles zugreifen oder geht es dir darum diese auch Sofort im Designer zu sehen?
Wenn ja dann definiere die Styles im selben Projekt

29.03.2011 - 09:57 Uhr

Also deine Variablen sind vom Typ Bool und du würdest gerne ein Brush daraus
erzeugen? da fällt mir direkt das Stichwort Converter ein (genauer IConverter)

oder willst du einfach nur den aktuellen Farbwert bzw den Brush an die nächste seite übergeben?

25.03.2011 - 12:08 Uhr

Ganz klar wird mir die Notation hier nicht,

Source="/MyClassLib.Styles;component/Styles.xaml"  

Was ist nun die MyClassLib? Und warum darauf die Referenz?
Die Styles befinden isch aber in der Styles.xaml, oder?

MyClassLib.Styles ist der Name des Projektes. Das "MyClassLib.Styles;component" gibt an dass sich die Datei innerhalb einer anderen Assembly befindet. ohen das wird innerhalb der eigenen Assembly gesucht und logischerweise nichts gefunden

25.03.2011 - 12:06 Uhr

Bevor man die Styles auslagert kann man sie auch direkt in den Resourcen der View definieren. Der Designer würde den Style immer anzeigen Ohne kompilieren zu müssen

25.03.2011 - 11:50 Uhr

Ich habe ein neues Projekt erstellt (ClassLibrary)
Danach ein ResourceDictionary angelegt (Styles.xaml)

In der View habe ich dann folgendes als Resource definiert:


<UserControl.Resources>
        <ResourceDictionary x:Key="CustomStyles">
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/MyClassLib.Styles;component/Styles.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
</UserControl.Resources>

Natürlich den Verweis auf die ClassLib nicht vergessen

25.03.2011 - 11:30 Uhr

Das wär mein erster Ansatz gewesen, aber das geht ja nicht.

Und was geht nicht?
Ich habe selber ein Silverlight Projekt in dem alle Styles in ein eigenes Projekt
ausgelagert worden sind. Im Designer sehe ich den Style dann zwar nicht aber zur Laufzeit

24.03.2011 - 15:22 Uhr

Wenn du mehr wissen willst dann guckst du hier (Behandelt in erster linie zwar das Framework Prism aber dort wird auch gezeigt und erklärt wieso Klassen Interfaces verwenden sollten)

prism--silverlight-part-1-taking-sketched-code-towards-unity

leider english aber es lohnt sich!

24.03.2011 - 11:32 Uhr

Ich kann dir Dieses WebCast empfehlen

Silverlight in Deep

Ist zwar Silverlight aber in WPF ist es das gleiche Prinzip

24.03.2011 - 11:15 Uhr

Meiner Meinung nach (Muss nicht Richtig sein) sollte jede View ihr eigenes ViewModel
haben.
Wenn die Kommunikation zwischen den VMs erforderlich ist dann solltest du dir mal
Prism anschauen oder falls das Over Kill ist mit Statischen Events (oder Properties in
der BasisKlasse) arbeiten

wie gesagt:
Meine Meinung (muss nicht Richtig sein!)

24.03.2011 - 07:54 Uhr

Ich würde mal behaupten dass die Ausrichtung vom Grid aus kommt
Versuch doch mal die RowDefinitions in ColumnDefinitons zu ändern und dort wo es verwendet wird auch (also aus Grid.Row="X" --> Grid.Column="X")

17.03.2011 - 14:49 Uhr

Zu winSharp93 Beitrag ergänze ich noch folgendes Stichwort
EventToCommand

03.03.2011 - 15:25 Uhr

Das DataGrid hat eine Property "AutoGenerateColumns" die du auf True setzen kannst.

02.03.2011 - 14:00 Uhr

Hier hast du eine gute Erklärung inklusive einem Beispiel
FindWindow
Und die Doku liefert auch einiges (ClassName = ProzessName)

01.03.2011 - 10:50 Uhr

Ich glaube das Problem ist hier nicht das Binden an die ListBox sondern eher sowas wie eine Master/Detail ansicht zu realisieren

Hier sind einige Links
Silverlight Business Apps
Create Silverlight Master

16.02.2011 - 15:48 Uhr
  
<Setter Property="Button.BorderBrush">  
       <SolidColorBrush Color="#ffbd69"/>  
</Setter>  
  

Nur zur ergänzung:


<Setter Property="Button.BorderBrush">
<Setter.Value>
       <SolidColorBrush Color="#ffbd69"/>
</Setter.Value>
</Setter>

15.02.2011 - 15:49 Uhr

Hallo,

Versuchst du herauszufinden welche Dateierweiterung mit welchem Programm geöffnet wird? Wenn Ja dann versuch mal fogendes
System File Association

03.02.2011 - 16:14 Uhr

Hallo,

im output Fenster rechtsklicken. rest erklärt sich von selbst

03.02.2011 - 14:48 Uhr

Hallo,

In der MSDN findest du genug Informationen:
XML-Dokumente und XML-Daten

02.02.2011 - 15:51 Uhr

Hallo,

ich habe das nicht selber ausprobiert aber vielleicht hilft es dir ja weiter
Add Drag-and-Drop Magic to Your Web Pages Using Microsoft AJAX Library

02.02.2011 - 09:53 Uhr

Der NameSpace den du benötigst befindet sich hier in der Blend SDK (WPF)
oder Hier (Silverlight)