Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Qt21580
Thema: WPF App (Win10) wird beim Start gekillt
Am im Forum: GUI: WPF und XAML

Werde die Neuinstallation vom Framework in Betracht ziehen wird wohl am besten sein.

Aber Danke an Alle

Thema: WPF App (Win10) wird beim Start gekillt
Am im Forum: GUI: WPF und XAML

Zitat

Es macht keinen Sinn, es zu mischen, vermutlich kommen die Probleme daher.
Natürlich macht das keinen Sinn wollte nur die Messageboxen ausschliessen.
Konsole alleine funktioniert
Zitat

Kannst du dich nicht per Remote-Debugging (aus VS heraus) an den Prozess auf dem anderen Rechner hängen?
Kann ich leider nicht
Zitat
Stürzt die App denn auch ab, wenn du einen leeren MainWindow-Konstruktor hast (bzw.. ohne die Init-Methode)?
Nein

Thema: WPF App (Win10) wird beim Start gekillt
Am im Forum: GUI: WPF und XAML

Ja ich weiß, ich habe nur einen Rechner bei dem knallt es nach dem Start wenn ich einen Text im Fenster ausgebe.

PS: Die gleiche App als WinForm funktioniert aber????????

Thema: WPF App (Win10) wird beim Start gekillt
Am im Forum: GUI: WPF und XAML

Auch einen schönen Morgen P!lle

Ich meinte das ist der ganze Code den ich geschrieben habe...


App.xaml

<Application x:Class="WpfApplication4.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:WpfApplication4"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
         
    </Application.Resources>
</Application>


//App.xaml.cs
using System;
using System.Diagnostics;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Threading;

namespace WpfApplication4
{
    /// <summary>
    /// Interaktionslogik für "App.xaml"
    /// </summary>
    public partial class App : Application
    {
        public App() : base()
        {
            SetupUnhandledExceptionHandling();
        }

        private void SetupUnhandledExceptionHandling()
        {
            // Catch exceptions from all threads in the AppDomain.
            AppDomain.CurrentDomain.UnhandledException += (sender, args) =>
                ShowUnhandledException(args.ExceptionObject as Exception, "AppDomain.CurrentDomain.UnhandledException", false);

            // Catch exceptions from each AppDomain that uses a task scheduler for async operations.
            TaskScheduler.UnobservedTaskException += (sender, args) =>
                ShowUnhandledException(args.Exception, "TaskScheduler.UnobservedTaskException", false);

            // Catch exceptions from a single specific UI dispatcher thread.
            Dispatcher.UnhandledException += (sender, args) =>
            {
                // If we are debugging, let Visual Studio handle the exception and take us to the code that threw it.
                if (!Debugger.IsAttached)
                {
                    args.Handled = true;
                    ShowUnhandledException(args.Exception, "Dispatcher.UnhandledException", true);
                }
            };

            // Catch exceptions from the main UI dispatcher thread.
            // Typically we only need to catch this OR the Dispatcher.UnhandledException.
            // Handling both can result in the exception getting handled twice.
            //Application.Current.DispatcherUnhandledException += (sender, args) =>
            //{
            //	// If we are debugging, let Visual Studio handle the exception and take us to the code that threw it.
            //	if (!Debugger.IsAttached)
            //	{
            //		args.Handled = true;
            //		ShowUnhandledException(args.Exception, "Application.Current.DispatcherUnhandledException", true);
            //	}
            //};
        }

        void ShowUnhandledException(Exception e, string unhandledExceptionType, bool promptUserForShutdown)
        {
            //var messageBoxTitle = $"Unexpected Error Occurred: {unhandledExceptionType}";
            var messageBoxMessage = $"The following exception occurred:\n\n{e}";
            //var messageBoxButtons = MessageBoxButton.OK;

            if (promptUserForShutdown)
            {
                messageBoxMessage += "\n\nNormally the app would die now. Should we let it die?";
                //messageBoxButtons = MessageBoxButton.YesNo;
            }

            // Let the user decide if the app should die or not (if applicable).
            Console.WriteLine(messageBoxMessage);
            //if (MessageBox.Show(messageBoxMessage, messageBoxTitle, messageBoxButtons) == MessageBoxResult.Yes)
            //{
            //    Application.Current.Shutdown();
            //}
        }
    }
}

MainWindow.xaml

<Window x:Class="WpfApplication4.MainWindow"
        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:local="clr-namespace:WpfApplication4"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid x:Name="grid">
        <!--<TextBlock Text="Test" />-->
    </Grid>
</Window>


 //MainWindow.xaml.cs

using System;
using System.Collections.Generic;
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 WpfApplication4
{
    /// <summary>
    /// Interaktionslogik für MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            Init();

        }

        private void Init()
        {
            try
            {
                Console.WriteLine("Anfang");
                TextBlock tb = new TextBlock();
                tb.Text = "Text";
                grid.Children.Add(tb);
                Console.WriteLine("Fertig");
            }
            catch(Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }
}


Ausgabetyp ist eine Konsolenanwendung

Thema: WPF App (Win10) wird beim Start gekillt
Am im Forum: GUI: WPF und XAML

Hallo p!lle
Das Ergebniss vom eventlog hab ich schon gepostet.
Mit etwas mehr code ist ein Problem denn bei der Testapp gibt es nichr mehr code als gepostet

Den tipp von spook muss ich gleich mal probieren

Thema: WPF App (Win10) wird beim Start gekillt
Am im Forum: GUI: WPF und XAML

Das ist ja mein Problem es wird keine Exception geworfen

Wenn ich in der Init() Methode eine Division durch null mache dann wird eine Unhandled Exception geworfen und verarbeitet aber in diesem Fall eben nicht

Thema: WPF App (Win10) wird beim Start gekillt
Am im Forum: GUI: WPF und XAML

Danke MrSparkle
Das habe ich schon versucht leider auch ohne Erfolg

Thema: WPF App (Win10) wird beim Start gekillt
Am im Forum: GUI: WPF und XAML

Zitat
Hast du den Code mal debuggt?
Was meist du mit Code debuggen???

Auf dem Client mit VS funktioniert ja alles

Thema: WPF App (Win10) wird beim Start gekillt
Am im Forum: GUI: WPF und XAML

Hier ist der Quellcode von dem Beispiel


public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            Init();

        }

        private void Init()
        {
            try
            {
                Console.WriteLine("Anfang");
                TextBlock tb = new TextBlock();
                tb.Text = "Text";
                grid.Children.Add(tb);
                Console.WriteLine("Fertig");
            }
            catch
            {
                throw;
            }
        }
    }

Thema: WPF App (Win10) wird beim Start gekillt
Am im Forum: GUI: WPF und XAML

Auch Lokal ist es dasselbe Problem

Thema: WPF App (Win10) wird beim Start gekillt
Am im Forum: GUI: WPF und XAML

Zitat
Aber ich kann die Error-Suche nicht für Dich übernehmen (will ich auch gar nicht).
Sollst du auch nicht werde mal schauen was ich zu ACCESS_VIOLATION finde.

Thema: WPF App (Win10) wird beim Start gekillt
Am im Forum: GUI: WPF und XAML

Die App ist mit FW 4.5.2 erstellt worden
Installiert ist 4.6.1

DispatcherUnhandledException="App_DispatcherUnhandledException"
hab eingebaut wird aber nicht geworfen

Thema: WPF App (Win10) wird beim Start gekillt
Am im Forum: GUI: WPF und XAML

Hallo zusammen
So habe die letzten 3 Tage damit verbracht alles zu versuchen hatte leider keinen Erfolg gehabt.
Ich kann die App auf einem bestimmten Client Rechner mit Win10 nicht starten.
Habe mir eine neues Projekt angelegt mit nichts außer den Standarddateien einer neuen Wpf App.
Wenn ich diese auf dem besagten Client starte funktioniert sie wenn ich in das MainWindow ein Frameworkelement (Textblock, Button, RadioButton) gebe geht es auch noch doch sobald ich einen Content festlege kracht es beim Start ohne Exception (bei einer Combobox wird die App sofort gekillt auch ohne Items). Beim Titel von dem MainWindow selbst gibt es keine Probleme.

DispatcherUnhandledException="App_DispatcherUnhandledException"
gibt keine Exception aus

Wenn ich das ganze über Publish lokal bereitstelle dann wird die App zwar nicht gekillt aber auch nicht gestartet.

Ausgabe EventViewer
ApplicationError
WpfApplication3.exe
1.0.0.0
60100170
unknown
0.0.0.0
00000000
c0000005
0000000000000000
e30
01d6f3d9264ed461
Q:\PROD\WZSB\99_WZS_4.0\Wpf_Übung1\WpfApplication3\bin\Debug\WpfApplication3.exe
unknown
ce73bd28-d718-46c4-99bd-52f97e5f9a0b

.NetRuntime
Anwendung: WpfApplication3.exe Frameworkversion: v4.0.30319 Beschreibung: Der Prozess wurde aufgrund einer unbehandelten Ausnahme beendet. Ausnahmeinformationen: Ausnahmecode c0000005, Ausnahmeadresse 0000000000000000

Installiert ist das Framework 4.6.1

Vielleicht hat jemand noch eine Idee
Danke....

Thema: WPF App (Win10) wird beim Start gekillt
Am im Forum: GUI: WPF und XAML

Ist mir klar das ihr keine glaskugel habt. Die app ist ein release.
Das mit dem eventlog hab ich noch nicht probiert aber dass werde ich gleich mal probieren.

Thema: WPF App (Win10) wird beim Start gekillt
Am im Forum: GUI: WPF und XAML

Hallo zusammen

Ich habe seit kurzem ein Problem mit der Lauffähigkeit einer WPF Anwendung unter Win10, das gemeine daran ist das das nicht bei jedem Rechner der Fall ist. Auf dem Rechner mit VS 2015 (FW 4.5.2) ist kein Problem auf einem anderen mit Win10 ohne VS auch nicht nur an einem bestimmten wird die Applikation nicht gestartet. Habe schon alle benötigten Dateien und Bibliotheken kontrolliert, unter Win7 gab es ja auch keine Probleme und am Anfang unter Win10 auch nicht erst seit einem Windows Update. Beim Start kommt auch keine Exception oder irgendwas dergleichen wird einfach nicht gestartet (Unhandled-Exception wird nicht geworfen), kann also auch schlecht debuggen. Hat jemand von euch schon mal sowas gehabt und kann mir da vielleicht einen Tipp geben. Hab auch schon Stundenlang GOOGLE ausgequetscht aber da gibt es wahrscheinlich 1000 Ursachen für.
Weiß echt nicht mehr weiter?????????

Thema: Welche x Zahlen ergeben Summe y
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo zusammen

Ich habe da eine mathematische Frage zur "Mengenlehre".
Ich habe eine Liste mit verschiedenen werten (int) nun möchte ich anhand einer bestimmten Summe die passenden Werte finden.

Zb. :Summe y ist 60

Werte in der Liste
30
20
5
10
15
17
3

Das Ergebnis sollte sein:


    30, 20, 10
    30, 10, 17, 3
    20, 5, 15, 17, 3
    30, 5, 15, 10 usw.

Kann mir da jemand weiterhelfen.

Thema: Wie übergebe ich einen Parameter an eine Validationrule?
Am im Forum: GUI: WPF und XAML

Hallo zusammen,

kann mir vielleicht jemand erklären wie das mit dem ValidationRule mit Parameterübergabe funktioniert.

Ich habe ein DataGrid mit einer Textbox und einer Combobox, die Textbox soll validiert werden das klappt auch nur schaffe ich es nicht das ich den Parameter aus einer Property übergabe also dynamisch statisch funktionierts was mache bloss falsch?

Hier ein Codeausschnitt


            <DataGrid DockPanel.Dock="Top" x:Name="dataGridNewJobs" Margin="4" AutoGenerateColumns="False"
                  ItemsSource="{Binding NewJobsNewAfo}" CanUserAddRows="False" SelectedItem="{Binding SelectedNewJobsNewAfo}">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Anzahl">
                        <DataGridTextColumn.Binding>
                            <Binding Path="Anzahl" UpdateSourceTrigger="PropertyChanged">
                                <Binding.ValidationRules>
                                    <validation:MaxAnzahlValidationRule>
                                        <validation:MaxAnzahlValidationRule.MaxValueContainer>
                                            <validation:IntegerContainer
                                                DataContext="{Binding 
                                                    Source={StaticResource Locator}, 
                                                    Path=DataContext}" 
                                                    Value="{Binding NewJob_VM.CurrentRowValueAnzahl}"
                                                />
                                            <!--<validation:IntegerContainer Value="{Binding NewJob_VM.CurrentRowValueAnzahl, Mode=TwoWay}" />-->
                                            <!--<validation:IntegerContainer Value="{ Path=CurrentRowValueAnzahl}" />-->
                                            <!--<validation:IntegerContainer Value="{Binding CurrentRowValueAnzahl}" />-->
                                            <!--<validation:IntegerContainer Value="{Binding Path=DataContext.CurrentRowValueAnzahl, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" />-->
                                            <!--<validation:NewJobNewAfoRowAnzahlWrapper MaxAnzahl="{Binding Source={StaticResource RowValue_MaxAnzahl}, Path=CurrentRowValueAnzahl}" />-->
                                        </validation:MaxAnzahlValidationRule.MaxValueContainer>
                                    </validation:MaxAnzahlValidationRule>
                                </Binding.ValidationRules>
                            </Binding>
                        </DataGridTextColumn.Binding>
                    </DataGridTextColumn>

                    <DataGridTemplateColumn Header="AFO ComboBox" Width="260">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <ComboBox IsEditable="False"
                                      ItemsSource="{Binding DataContext.Afo, Mode=OneWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}" 
                                      DisplayMemberPath="Arbeitstext" 
                                      SelectedValuePath="Afonummer" 
                                      SelectedValue="{Binding NeueAfonummer, UpdateSourceTrigger=PropertyChanged}"
                                      SelectedItem="{Binding DataContext.SelectedAfo, Mode=TwoWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}" >
                                </ComboBox>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>

                </DataGrid.Columns>

                <i:Interaction.Triggers>
                <i:EventTrigger EventName="CellEditEnding">
                    <i:InvokeCommandAction Command="{Binding DataContext.CellEditEndingCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}"  />
                </i:EventTrigger>
            </i:Interaction.Triggers>

        </DataGrid>

Etwas zum Ablauf:
Wenn ich den Wert in der Textbox editiere und die Zelle verlasse soll die ValidationRule den Wert mit einem Wert aus einer Property vergleichen den ich zuweise wenn ich eine Zeile im DataGrid markiere.

Code aus meinem ViewModel


        private WZS_NewJobNewAfo p_selectedNewJobsNewAfo;
        public WZS_NewJobNewAfo SelectedNewJobsNewAfo
        {
            get { return p_selectedNewJobsNewAfo; }
            set
            {
                if (value == p_selectedNewJobsNewAfo) return;
                p_selectedNewJobsNewAfo = value;

                if (p_selectedNewJobsNewAfo != null)
                    CurrentRowValueAnzahl = p_selectedNewJobsNewAfo.Anzahl;

                RaisePropertyChanged();


            }
        }

        #endregion Properties

        private int p_currentRowValueAnzahl;

        public int CurrentRowValueAnzahl
        {
            get { return p_currentRowValueAnzahl; }
            set
            {
                if (value == p_currentRowValueAnzahl) return;
                p_currentRowValueAnzahl = value;
                RaisePropertyChanged();
            }
        }

und noch die ValidationRile Klasse


    public class IntegerContainer : FrameworkElement
    {
        public int Value
        {
            get { return (int)GetValue(ValueProperty); }
            set { SetValue(ValueProperty, value); }
        }

        public static readonly DependencyProperty ValueProperty =
            DependencyProperty.Register(
            "Value",
            typeof(int),
            typeof(IntegerContainer),
            new UIPropertyMetadata(0));
    }

    public class NewJobNewAfoRowAnzahlWrapper : DependencyObject
    {
        public static readonly DependencyProperty MaxAnzahlProperty =
            DependencyProperty.Register("MaxAnzahl", typeof(int), 
            typeof(NewJobNewAfoRowAnzahlWrapper), new FrameworkPropertyMetadata(int.MaxValue));

        public int MaxAnzahl
        {
            get { return (int)GetValue(MaxAnzahlProperty); }
            set { SetValue(MaxAnzahlProperty, value); }
        }
    }

    public class MaxAnzahlValidationRule : ValidationRule
    {
        public NewJobNewAfoRowAnzahlWrapper Wrapper { get; set; }
        private int _max;

        private IntegerContainer maxValueContainer;

        public IntegerContainer MaxValueContainer
        {
            get { return maxValueContainer; }
            set { maxValueContainer = value; }
        }

        public override ValidationResult Validate(object value, CultureInfo cultureInfo)
        {
            string s = value.ToString();

            int dividend = (int)Convert.ChangeType(value, typeof(int));

            int divisor = this.MaxValueContainer.Value;


            //_max = Wrapper.MaxAnzahl;
            return ValidationResult.ValidResult;
        }
    }

IntegerContainer ist aus einem Beispiel von CodeProject Codeproject

NewJobNewAfoRowAnzahlWrapper ist ist ein Beispiel von Microsoft TechNet. Beide Varianten funtionieren wenn ich einen Statischen Parameter übergebe aber eben nicht wenn ich denn Wert aus der Property mitgebe dann habe ich immer 0 oder eben den int.MaxValue, also liegt es nicht an der ValidationRule Klasse sondern an meiner Bindung zur Property die krieg ich aber irgendwie nicht gebacken?????????????

Kann mir da bitte jemand einen Tipp geben. Danke, Danke und nochmal Danke...

Thema: Wie mache ich im einem DataGrid eine Spalte für eine Berechnung von zwei Werten?
Am im Forum: GUI: WPF und XAML

Ja das ist richtig.

Aus der DB wird eine Property Anzahl gelesen die ist in meinem Model.
Ich habe aber in meinem Model noch die Propertys NeueAnzahl und Schrott die
werden aber nicht von er DB befüllt sondern diese Werte brauche ich zum zurückschreiben.

Wenn ich in meinem VM eine Property habe an die ich binde kommt folgende
Fehlermeldung: Two-way binding requires Path or XPath.

Mein Model



        public int? Anzahl { get; set; } //Nullable<int> weil der eben null sein kann.
        public int tempSchrott { get; set; } //Schrott sollte errechnet werden.
        public int tempAnzahl { get; set; } //NeueAnzahl


So habe ich das schon gemacht nur geht's nicht.?????

Thema: Wie mache ich im einem DataGrid eine Spalte für eine Berechnung von zwei Werten?
Am im Forum: GUI: WPF und XAML

Zitat
Warum meinst du da ein Nullable<Int> benutzen zu müssen?
Nullable<Int> weil ich die Daten aus einer DB lese und ich Probleme beim Casten hatte.
Zitat
Und warum "{Binding Path=Total}"?
Binding="{Binding Path=Total}" soll eigentlich die Bindung zur Property in meinem VM sein.
Zitat
Wann ändert WPF den Wert im Binding für Total?
Das ist ja mein Problem ich weiss es nicht.
Zitat
Wo wirfst du die?
ICh dachte mir bei CellEditEnding


        <DataGrid x:Name="dataGrid" Grid.Row="0" ItemsSource="{Binding Path=SelectedJobsToFinish}" Margin="10,10,10,0" AutoGenerateColumns="False" 
                  FontSize="16" HeadersVisibility="All" CanUserAddRows="False" CanUserDeleteRows="False" 
                  SelectedItem="{Binding SelectedJobToFinish}" Height="286" VerticalAlignment="Top">
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding AuftragLfdNr}" ClipboardContentBinding="{x:Null}" Header="Auftragsnummer" IsReadOnly="True" Width="150"/>
                <DataGridTextColumn Binding="{Binding Sachnummer}" ClipboardContentBinding="{x:Null}" Header="Sachnummer" IsReadOnly="True" Width="130"/>
                <DataGridTextColumn Binding="{Binding Benennung}" ClipboardContentBinding="{x:Null}" Header="Benennung" IsReadOnly="True" Width="200"/>
                <DataGridTextColumn Binding="{Binding Anzahl}" ClipboardContentBinding="{x:Null}" Header="Anzahl" Width="80" />
                <DataGridTextColumn x:Name="colAnzahl_Neu" ClipboardContentBinding="{x:Null}" Header="Anzahl Neu" Width="100">
                    <DataGridTextColumn.Binding>
                        <Binding Path="tempAnzahl">
                            <Binding.ValidationRules>
                                <validation:CellDataInfoValidationRule ValidationStep="UpdatedValue" />
                            </Binding.ValidationRules>
                        </Binding>
                    </DataGridTextColumn.Binding>
                </DataGridTextColumn>
                <DataGridTextColumn Binding="{Binding Path=Total}" Header="Schrott" Width="80" />
                <!--<DataGridTextColumn Binding="{Binding XPath=Total}" ClipboardContentBinding="{x:Null}" Header="Schrott1" Width="80" />-->
            </DataGrid.Columns>


            <i:Interaction.Triggers>
                <i:EventTrigger EventName="CellEditEnding">
                    <i:InvokeCommandAction Command="{Binding Path=TextChangedCommand}"  />
                </i:EventTrigger>
            </i:Interaction.Triggers>
        </DataGrid>

Thema: Wie mache ich im einem DataGrid eine Spalte für eine Berechnung von zwei Werten?
Am im Forum: GUI: WPF und XAML

Hallo Coffeebean
Das habe ich ja versucht nur leider ohne Erfolg. Kann mir vielleicht jemand ein kleines Beispiel zeigen wie ich das angehe.

Wie gesagt, die Berechnung wird ja gemacht nur das DataGrid zeigt das Ergebniss nicht an.

Thema: Wie mache ich im einem DataGrid eine Spalte für eine Berechnung von zwei Werten?
Am im Forum: GUI: WPF und XAML

Hallo FZelle

Das habe ich auch schon versucht nur klappt das bei mir irgndwie nicht.



        <DataGrid x:Name="dataGrid" Grid.Row="0" ItemsSource="{Binding Path=SelectedJobsToFinish}" Margin="10,10,10,0" AutoGenerateColumns="False" 
                  FontSize="16" HeadersVisibility="All" CanUserAddRows="False" CanUserDeleteRows="False" 
                  SelectedItem="{Binding SelectedJobToFinish}" Height="286" VerticalAlignment="Top">
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding AuftragLfdNr}" ClipboardContentBinding="{x:Null}" Header="Auftragsnummer" IsReadOnly="True" Width="150"/>
                <DataGridTextColumn Binding="{Binding Sachnummer}" ClipboardContentBinding="{x:Null}" Header="Sachnummer" IsReadOnly="True" Width="130"/>
                <DataGridTextColumn Binding="{Binding Benennung}" ClipboardContentBinding="{x:Null}" Header="Benennung" IsReadOnly="True" Width="200"/>
                <DataGridTextColumn Binding="{Binding Anzahl}" ClipboardContentBinding="{x:Null}" Header="Anzahl" Width="80" />
                <DataGridTextColumn x:Name="colAnzahl_Neu" ClipboardContentBinding="{x:Null}" Header="Anzahl Neu" Width="100">
                    <DataGridTextColumn.Binding>
                        <Binding Path="tempAnzahl">
                            <Binding.ValidationRules>
                                <validation:CellDataInfoValidationRule ValidationStep="UpdatedValue" />
                            </Binding.ValidationRules>
                        </Binding>
                    </DataGridTextColumn.Binding>
                </DataGridTextColumn>
                <DataGridTextColumn Binding="{Binding Path=Total}" Header="Schrott" Width="80" />
                <!--<DataGridTextColumn Binding="{Binding XPath=Total}" ClipboardContentBinding="{x:Null}" Header="Schrott1" Width="80" />-->
            </DataGrid.Columns>


Die Property wird einfach nie aufgerufen



        private int? _total = 0;
        public int? Total
        {
            get { return _total; }
            set
            {
                _total = value;
                RaisePropertyChanged();
            }
        }


Wenn ich dann per Hand etwas in die Spalte Schrott eintrage dann bekomme ich zum dank diese Fehlermeldung: Two-way binding requires Path or XPath.

Habe einen Trigger eingefügt......
der auch nicht Funktioniert


            <i:Interaction.Triggers>
                <i:EventTrigger EventName="CellEditEnding">
                    <i:InvokeCommandAction Command="{Binding Path=TextChangedCommand}"  />
                </i:EventTrigger>
            </i:Interaction.Triggers>





        public RelayCommand<object> TextChangedCommand { get; private set; }
        private void ExecuteTextChangedCommand(object value)
        {
            Total = 11;
            RaisePropertyChanged("Total");

        }

Thema: Wie mache ich im einem DataGrid eine Spalte für eine Berechnung von zwei Werten?
Am im Forum: GUI: WPF und XAML

Hallo zusammen,

Ich habe ein Problem mit dem DataGrid.
Kann mir jemand einen Tip geben wie man in einem dataGrid eine Spalte für eine Berechnung von zwei Werten macht mittels MVVM Pattern.



        <DataGrid x:Name="dataGrid" Grid.Row="0" ItemsSource="{Binding Path=SelectedJobsToFinish}" Margin="10,10,10,0" AutoGenerateColumns="False" 
                  FontSize="16" HeadersVisibility="All" CanUserAddRows="False" CanUserDeleteRows="False" 
                  SelectedItem="{Binding SelectedJobToFinish}" Height="286" VerticalAlignment="Top">
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding AuftragLfdNr}" ClipboardContentBinding="{x:Null}" Header="Auftragsnummer" IsReadOnly="True" Width="150"/>
                <DataGridTextColumn Binding="{Binding Sachnummer}" ClipboardContentBinding="{x:Null}" Header="Sachnummer" IsReadOnly="True" Width="130"/>
                <DataGridTextColumn Binding="{Binding Benennung}" ClipboardContentBinding="{x:Null}" Header="Benennung" IsReadOnly="True" Width="200"/>
                <DataGridTextColumn Binding="{Binding Anzahl}" ClipboardContentBinding="{x:Null}" Header="Anzahl" Width="80" />
                <DataGridTextColumn ClipboardContentBinding="{x:Null}" Header="Anzahl Neu" Width="100">
                    <DataGridTextColumn.Binding>
                        <Binding Path="tempAnzahl">
                            <Binding.ValidationRules>
                                <validation:CellDataInfoValidationRule ValidationStep="UpdatedValue" />
                            </Binding.ValidationRules>
                        </Binding>
                    </DataGridTextColumn.Binding>
                </DataGridTextColumn>
                <DataGridTextColumn Binding="{Binding Path=Schrott, UpdateSourceTrigger=PropertyChanged}" ClipboardContentBinding="{x:Null}" Header="Schrott" Width="80" />
                <!--<DataGridTextColumn Binding="{Binding XPath=Total}" ClipboardContentBinding="{x:Null}" Header="Schrott1" Width="80" />-->
            </DataGrid.Columns>
        </DataGrid>


Das Bild ist nicht ganz aktuell, sind einige Testspalten dazugekommen.

Wenn ich in das Feld Anzahl Neu einen Wert eingebe soll das Feld Schrott die Differenz zwischen Anzahl und Anzahl neu errechnen. Ich habe es soweit geschafft das dieser Wert im Model errechnet wird nur das Problem das ich habe ist das der errechnete Wert nicht in meinem Datagrid angezeigt wird erst nachdem ich in das Feld Schrott geklickt habe bekomme ich diesen zu sehen.

Hier ein Ausschnitt aus meinem ViewModel.



        #region Properties
        private ObservableCollection<WZS_Auftrag> p_selectedJobs;
        public ObservableCollection<WZS_Auftrag> SelectedJobsToFinish
        {
            get { return p_selectedJobs; }
            set
            {
                if (value == p_selectedJobs) return;
                p_selectedJobs = value;
                SelectedJobToFinish = p_selectedJobs[0];
                //SelectedJobToFinish.tempSchrott = 12;
                RaisePropertyChanged();
            }
        }

        private WZS_Auftrag p_selectedJob;
        public WZS_Auftrag SelectedJobToFinish
        {
            get { return p_selectedJob; }
            set
            {
                if (value == p_selectedJob) return;
                p_selectedJob = value;
                //p_Anz = p_selectedJob.Anzahl;
                //p_selectedJob.tempSchrott = 12;
                RaisePropertyChanged();
            }
        }
        #endregion Properties


Die Berechnung habe ich schon überall gemacht nur leider funktioniert nix.

Bitte um einen Denkanstoss komme hier einfach nicht mehr weiter auch wenn es wahrscheinlich nur eine Lapalie ist für jemanden ist der das öfter macht.

In WinForms gibt es für sowas im DataSet oder Table eine Expression Funktion, wie mache ich sowas mit WPF/MVVM denn da gibt es keine Expression zumindest habe ich nix gefunden.....

Thema: Events mit MVVM Pattern in WPF
Am im Forum: GUI: WPF und XAML

Danke für die Antwort Sir rufo, werde ich gleich mal probieren.

Interaktion ist das von expression blend oder.
Was sind die Pakete von fody bzw kann man die wo laden?

wird mit deiner Methode die Eigenschaft selectionchanged im Model aufgerufen?
Kannst du mir vielleicht noch einen Tipp geben wo ich zum Thema mvvm eine ordentliche Lektüre finde ( Gutes BUCH oder EBOOK .... ).

Thema: Events mit MVVM Pattern in WPF
Am im Forum: GUI: WPF und XAML

Danke PottKafe,

Habe alle drei Möglichkeiten probiert nur leider funktioniert keine davon.
Was mir aber aufgefallen ist, wenn ich in der Datailansicht mehr als einen Eintrag auswähle mit der Strg - Taste nicht mit der Checkbox wird das SelectedItem nur einmal ausgelöst.


<DataTemplate x:Key="checkbox">
            <!--<CheckBox x:Name="checkBox1" IsChecked="{Binding IsChecked, Mode=TwoWay}" Margin="0,1,1,1"/>-->
            <CheckBox x:Name="checkbox1" IsChecked="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=ListViewItem}}" Margin="0,1,1,1">
                <!--<Trigger Property="IsChecked" Value="True"></Trigger>-->
            </CheckBox>
            <!--<DataTemplate.Triggers>
                <DataTrigger Binding="{Binding Path=IsChecked}" Value="True" />
            </DataTemplate.Triggers>-->

Beim PropertyChanged Event komm kein IsSelected an weil das mit der Bindung an die Eigenschaft IsChecked eben nicht funktioniert.


<ListView Name="lv" ItemsSource="{Binding Path=WZS_JobCollection}" FontSize="12" SelectedItem="{Binding Path=SelectedWZSAuftragItem}" src:AuftragViewModel.ListView="{Binding ElementName=lv}">

es muss doch eine Möglichkeit geben so einen bescheuertes Event/Command auszulösen.

Thema: Events mit MVVM Pattern in WPF
Am im Forum: GUI: WPF und XAML

Seit stunden knabber ich an einem Problem das eigentlich gar keines sein dürfte.
Da ich noch sehr neu im Umgang mit WPF bin und das meine erste Anwnedung in MVVM ist habe ich eine Frage.....

Ich habe mir eine View mit einem ListView Control gebaut. Dieses ListView Control hat zwei Ansichten (Kartenansicht und Detailansicht) das funktioniert ja noch. In der Detailansicht habe ich eine Checkbox mittels eines Templetes eingebaut wenn ich das nun nanhake sollte ein Event ausgelöst werden nur geht das nicht und ich weiss nicht woran es liegen könnte.


        <DataTemplate x:Key="centralTile">
            <DockPanel DockPanel.Dock="Left" Height="72" Width="300">
                <Image Source="..\Images\Type_71.png"  Margin="6,6,6,9"/>
                <DockPanel DockPanel.Dock="Right" >
                    <TextBlock DockPanel.Dock="Top" Text="{Binding Sachnummer}" FontSize="16" FontWeight="Bold" HorizontalAlignment="Left" Margin="0,4,0,1" />
                    <TextBlock DockPanel.Dock="Top" Text="{Binding Benennung}" FontSize="12" HorizontalAlignment="Left" Margin="0,0,0,1" />
                    <TextBlock DockPanel.Dock="Top" Text="{Binding Anzahl}" FontSize="12" HorizontalAlignment="Left" Margin="0,0,0,1" />
                </DockPanel>
            </DockPanel>
        </DataTemplate>


Habe hier schon alles versucht was Dr.Google ausgespuckt hat nur leider ohne Erfolg. Mit dem Checked-Event funktionierts zwar nur ist das nicht MVVM Conform und überhaupt bin ich nicht im ViewModel wo ich die Liste befülle.
        <DataTemplate x:Key="checkbox">
            <!--<CheckBox x:Name="checkBox1" IsChecked="{Binding IsChecked, Mode=TwoWay}" Margin="0,1,1,1"/>-->
            <CheckBox x:Name="checkbox1" IsChecked="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=ListViewItem}}" Margin="0,1,1,1" Checked="CheckBox_Checked">
                

                <!--<i:Interaction.Triggers>
                    <i:EventTrigger EventName="Click">
                        <cmd:EventToCommand Command="{Binding Path=ListViewCheckedCommand, Mode=OneWay}" CommandParameter="{Binding IsChecked, ElementName=checkbox}" />
                    </i:EventTrigger>
                </i:Interaction.Triggers>-->
                <!--<i:InvokeCommandAction Command="{Binding ListViewCheckedCommand}" CommandParameter="" />
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="Checked">
                        <i:InvokeCommandAction Command="{Binding Path=ListViewCheckedCommand}" />
                    </i:EventTrigger>
                </i:Interaction.Triggers>

                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="Checked">
                        <helper:SetterAction PropertyName="Checked" Value="Checked" />
                    </i:EventTrigger>
                </i:Interaction.Triggers>
                    <i:Interaction.Triggers>
                    <i:EventTrigger EventName="Click">
                        <helper:CommandAction Command="{Binding Path=ListViewCheckedCommand}"  />
                    </i:EventTrigger>
                </i:Interaction.Triggers>-->
            </CheckBox>
        </DataTemplate>

        <GridView x:Key="gridView">
            <GridViewColumn CellTemplate="{StaticResource checkbox}" />
            <!--<GridViewColumn CellTemplate="{StaticResource checkbox}">
                <CheckBox x:Name="checkBox1" IsChecked="{Binding IsChecked, Mode=TwoWay}" Margin="0,1,1,1"/>
            </GridViewColumn>-->
            <GridViewColumn Header="Auftrags Nr" DisplayMemberBinding="{Binding AuftragLfdNr}"/>
            <GridViewColumn Header="Sachnummer" DisplayMemberBinding="{Binding Sachnummer}"/>
            <GridViewColumn Header="Benennung" Width="200" DisplayMemberBinding="{Binding Benennung}"/>
            <GridViewColumn Header="Abmessung" DisplayMemberBinding="{Binding Abmessung}"/>
            <GridViewColumn Header="Afo" DisplayMemberBinding="{Binding Afo}"/>
            <GridViewColumn Header="Termin" DisplayMemberBinding="{Binding Termin}"/>
            <GridViewColumn Header="Status" DisplayMemberBinding="{Binding Status}"/>
            <GridViewColumn Header="Anzahl" DisplayMemberBinding="{Binding Anzahl}"/>
            <GridViewColumn Header="Rep. Stufe" DisplayMemberBinding="{Binding RepStufe}"/>
            <GridViewColumn Header="Priorität" DisplayMemberBinding="{Binding Prio}"/>
            <GridViewColumn Header="Standort" DisplayMemberBinding="{Binding Standort}"/>
        </GridView>

        <local:PlainView x:Key="tileView" 
                   ItemTemplate="{StaticResource centralTile}" 
                   ItemWidth="200"/>

Ich weiss echt nicht mehr weiter.
Hoffe jemand kann mir helfen wie ich in einem DataTemplate einen Trigger auslöse oder die Checked Eigenschaft im ViewModel binde.

Thema: Datenbankabfrage und Schreiben in ein DataGrid nach Verlassen einer TextBox
Am im Forum: GUI: WPF und XAML

Stimmt funktioniert nicht ist keine Fehlermeldung das liegt daran weil es ja auch keine Fehlermeldung gibt. Mir fehlt da eben nur das Verständnis. Wie gesagt unter winforms habe ich eine datarow angelegt oder eine datarowview die konnte ich dann befüllen und auslesen. Das geht unter wpf also bei mir mit der Liste eben nicht. Nach dem generieren einer Zeile ist die zwar in der Liste aber aktuell auslesen kann ich erst nachdem das datagrid den focus verloren hat. Wenn ich zb auf eine schaltfläche drücke außerhalb des grids. Werde mal den Code Posten.

Danke.

Thema: Datenbankabfrage und Schreiben in ein DataGrid nach Verlassen einer TextBox
Am im Forum: GUI: WPF und XAML

Hallo zusammen,

Versuche gerade von WinForms auf WPF und MVVM umzusteigen oder besser gesagt zu erlernen. (Habe natürlich da einige Probleme damit).

Das schlimmste zur Zeit ist das aktualisieren einer ComboBox in einem DataGrid zur Laufzeit.

Ich gebe in eine textbox im DataGrid einen Wert ein, anhand dieses Wertes sollte die Befüllung der Combobox stattfinden also ich gebe in die Textspalte 1234 ein wenn ich nun die Spalte verlasse sollte eine SQL Abfrage gemacht werden und das Ergebnis in der Combobox zur Verfügung stehen bloss funktioniert das nicht so, eigentlich gar nicht.

Wenn ich im DataGrid in eine Zeile Schreibe und die Zelle dann verlasse ist zwar an der gebunden Liste eine Zeile hinzugekommen aber der Wert dieser Zeile ist 0 erst wenn ich das Datagrid verlasse wird die Liste aktualisiert zb. einen Button drücke dann ist es aber zu spät.

Ich hoffe es kann mir jemand einen Tipp geben wie ich das hier lösen kann.

?( ?( ?(

Thema: Accessdatenbank starten (MSACCESS.exe)
Am im Forum: Office-Technologien

Die Lösung von Sebastian.Lange habe ich schon probiert funktioniert aber nur begrenzt. Mit dieser Variante habe ich keine Möglichkeit für die Benutzersteuerung (Übergabe einer benutzerdefinierten mdw Datei).

@Coder007 Dein Tip ist wirklich der beste

Thema: Accessdatenbank starten (MSACCESS.exe)
Am im Forum: Office-Technologien

Tachen,

Ich möchte mit C# eine Accessdatenbank öffnen. Das starten einer Anwendung ist grundsätzlich ja kein Problem außer Access mit Datenbankkennwort und Benutzersteuerung (Benutzer und Kennwort in *.mdw). Das ganze funktioniert mit Process.Start() unter WinXP. Ist zwar keine saubere Lösung da das Datenbankkennwort bei meiner Lösung mit sendKey übertragen wird. Unter Win7 würde das zwar auch funktioniern aber wegen dazwischengeschalteten (UAC) Dialog geht der Fokus vom Access verloren und das Datenbankkennwort landet irgendwo (zur Not verzichte ich auf Absicherung mit Datenbankkennwort) und als dankeschön wird der komplette String im Klartext ausgegeben (inkl. Benutzername und Kennwort). Ich hab's auch mit Automatisierung versucht mittels der dll Microsoft.Office.Interops das funktioniert leider auch nicht. Gibt es da eine Möglichkeit die System mdw mit einzubinden. Vielleicht weiß von euch jemand wie ich das lösen kann.

Thema: ContextmenuStrip ohne AutoClose
Am im Forum: GUI: Windows-Forms

Danke.