Laden...

Forenbeiträge von Qt21580 Ingesamt 204 Beiträge

14.12.2022 - 19:44 Uhr

Tach

Die Inhalt sind die gleichen typen/modelle

Class User
-> Name
-> bool 1
-> bool 2
-> bool 3
usw....

14.12.2022 - 19:03 Uhr

Hallo zusammen
Habe eine allgemeine Frage zu linq
Ich habe 3 listen mit folgendem Inhalt
Liste 1:
String, bool(true), bool(false), bool(false)
Liste 2:
String, bool(false), bool(true), bool(false)
Liste 3:
String, bool(false), bool(false), bool(true)

Als Ergebniss brauche ich eine Liste deren Eintrag so aussieht
String, bool(true), bool(true), bool(true)

Also eine Union liste die summiert wird

Hat da jemand eine Idee zu einem Lösungsansatz

27.01.2021 - 13:01 Uhr

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

Aber Danke an Alle

27.01.2021 - 09:52 Uhr

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

Kannst du dich nicht per Remote-Debugging (aus VS heraus) an den Prozess auf dem anderen Rechner hängen?

Kann ich leider nicht

Stürzt die App denn auch ab, wenn du einen leeren MainWindow-Konstruktor hast (bzw.. ohne die Init-Methode)?

Nein

27.01.2021 - 08:53 Uhr

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????????

27.01.2021 - 08:30 Uhr

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

26.01.2021 - 17:27 Uhr

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

26.01.2021 - 15:07 Uhr

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

26.01.2021 - 14:31 Uhr

Danke MrSparkle
Das habe ich schon versucht leider auch ohne Erfolg

26.01.2021 - 14:28 Uhr

Hast du den Code mal debuggt?

Was meist du mit Code debuggen???

Auf dem Client mit VS funktioniert ja alles

26.01.2021 - 14:21 Uhr

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;
            }
        }
    }

26.01.2021 - 14:13 Uhr

Auch Lokal ist es dasselbe Problem

26.01.2021 - 13:22 Uhr

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.

26.01.2021 - 13:18 Uhr

Die App ist mit FW 4.5.2 erstellt worden
Installiert ist 4.6.1

DispatcherUnhandledException="App_DispatcherUnhandledException"

hab eingebaut wird aber nicht geworfen

26.01.2021 - 13:04 Uhr

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....

24.01.2021 - 18:44 Uhr

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.

24.01.2021 - 13:04 Uhr

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?????????

27.01.2019 - 10:45 Uhr

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.

23.12.2016 - 10:51 Uhr

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...

07.12.2016 - 13:47 Uhr

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.?????

07.12.2016 - 12:53 Uhr

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.

Und warum "{Binding Path=Total}"?

Binding="{Binding Path=Total}" soll eigentlich die Bindung zur Property in meinem VM sein.

Wann ändert WPF den Wert im Binding für Total?

Das ist ja mein Problem ich weiss es nicht.

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>


07.12.2016 - 11:50 Uhr

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.

07.12.2016 - 11:48 Uhr

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");

        }


07.12.2016 - 10:08 Uhr

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.....

18.11.2016 - 21:37 Uhr

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 .... ).

18.11.2016 - 14:54 Uhr

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.

18.11.2016 - 13:28 Uhr

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.

24.09.2016 - 12:04 Uhr

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.

23.09.2016 - 12:43 Uhr

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.

?( ?( ?(

14.10.2011 - 07:16 Uhr

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 👍

13.10.2011 - 12:11 Uhr

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.

20.05.2011 - 20:46 Uhr

Danke.

20.05.2011 - 12:30 Uhr

Hallo,

Ich habe da eine Frage zum AutoCloseProperty eines ContextmenuStrips.
Ich möchte erreichen das ich das Menü aufklappe mehrere Selektionen vornehme und
erst wenn ich ausserhalb klicke das sich das Menü schließt. Praktisch eine Art multiselect Menü!!!!!!!

Das gleiche funktioniert im Outlook bei den Kategorien.

Wenn ich AutoClose auf false setze dann bleibt das menü offen und ich finde kein Event auf das ich reagieren kann.

Wie kann ich das umsetzen.

mfg.:

26.03.2011 - 15:24 Uhr

Gibt es keinen der mir weiterhelfen kann.
Soll ich die Finger davon lassen.

25.03.2011 - 21:43 Uhr

Access

Hallo zusammen,

Hat von schon jemand erfahrung mit dem BL Toolkit gemacht
Ich stehe davor einem Problem mit einem Resultset.....

Kann mir jemand sagen wie dieses Resultset befüllen kann, bei mir ist immer
nur das erste im Array mit daten befüllt.

PS: Der SQL String in der Hilfe ist da nicht besonders hilfreich?

const string TestQuery = @"
			-- Parent Data
			SELECT       1 as ParentID
			UNION SELECT 2 as ParentID

			-- Child Data
			SELECT       4 ChildID, 1 as ParentID
			UNION SELECT 5 ChildID, 2 as ParentID
			UNION SELECT 6 ChildID, 2 as ParentID
			UNION SELECT 7 ChildID, 1 as ParentID

			-- Grandchild Data
			SELECT       1 GrandchildID, 4 as ChildID
			UNION SELECT 2 GrandchildID, 4 as ChildID
			UNION SELECT 3 GrandchildID, 5 as ChildID
			UNION SELECT 4 GrandchildID, 5 as ChildID
			UNION SELECT 5 GrandchildID, 6 as ChildID
			UNION SELECT 6 GrandchildID, 6 as ChildID
			UNION SELECT 7 GrandchildID, 7 as ChildID
			UNION SELECT 8 GrandchildID, 7 as ChildID
";

.....der funkt mit Access nicht wirklich

Hat von euch jemand ein konkretes Beispiel.

26.01.2011 - 23:18 Uhr

Hallo,

Habe hier im Forum nochmal gesucht und die mit Abstand besten Beiträge zu diesem Thema sind folgende.....

Eigene Rechteverwaltung entwickeln

und der

Rechtesystem wo anwenden? GUI oder BLL?

besonders der Beitrag von Rainbird

So eine "Funktionsbasierte Rechteprüfung" haben die meisten Anwendungen. Was oft fehlt, ist eine "Datenbezogene Rechteprüfung". Eine die z.B. die Frage beantworten kann, ob Benutzer Mustermann Datensatz 4711 sehen darf, oder nicht.

Das ist genau der Punkt wo ich nicht weiterkomme.

26.01.2011 - 21:45 Uhr

Hi Leute,

Ich will hier ein Thema anstossen dass mich schon einige Zeit beschäftigt. Vielleicht hat ja von euch auch jemand Interresse daran.

Ich möchte ein Rechteverwaltungsmodul bauen. Mir fehlt jedoch komplett der Plan wie ich das angehen soll, im INet habe ich eigentlich auch nichts brauchbares gefunden bis auf dieses VisualGuard.

Folgende Überlegung für den Aufbau.....Benutzerverwaltung....
User anlegen
Rollen/Gruppen anlegen
User einer Gruppe zuweisen
Einem User eine bestimmte Berechtigung erteilen (Benutzerebene: lesen, schreiben)
Einer Rolle eine Berechtigung erteilen (Gruppenebene: lesen, schreiben)
Einem User oder Rolle in einem bestimmten Form Steuerelement Eigenschaften setzen (Visible, Enabled usw...)
Einem User oder Rolle eine Grundabfrage bereitstellen. (zb.: User XY darf nur Rechnungen in Höhe von max. 500€ erstellen, oder einen Abfragefilter setzen usw...)

Bis zu dem Punkt mit der Grundabfrage bereitstellen ist's ja noch einigermaßen verständlich doch ab da fehlt mir der Plan......

Ich muss ja beim Aufruf einer Form die Daten abfragen damit ich auf die Einschränkungen reagieren kann. Wie soll mann etwas speichern das dann später dynamisch zusammengesetzt werden soll eben ein Filter.

Beispiel für einen Filter:
Max darf nur Lagerdaten der letzten 3 Wochen abrufen.
Ich weiß ja zur Entwurfszeit nicht welcher Filterkriterium engegeben wird.

Also ich weiß absolut nicht wie ich das angehen soll????????????

Wie gesagt vlt. hat jemand daran Interresse oder weiß etwas brauchbares oder hat schon jemand Überlegungen dieser Art angestellt. Ich stelle mir vor wer Businessanwendungen machen will kann so etwas immer brauchen. Also vlt. können wir soetwas in die Tat umsetzen.

mfg.: Viellecht habe ich bei dem ein oder anderen das Interresse geweckt.

07.01.2011 - 18:58 Uhr

Hallo zusammen,

möchte folgendes machen:
Ich lade per Reflection ein Formular in ein Panel (Rahmenlos). Jetzt möchte ich mit einem MouseDownEvent das richtige Steuerelement selektieren. Mein Problem ist nun das das MouseDownEvent nicht überall funktioniert, und zwar dort wo andere Container Controls sind (Panel, TableLayoutPanel usw...). Da die Steuerelemente keine Funktionalität besitzen, sie dienen rein zur Vorschau habe ich mir nun überlegt das ich eine Art Panel über die Form lege, das ganze soll natürlich transparent sein. Auf dieses Panel nun das MouseDownEvent registriere nur habe ich mir das leichter vorgestellt als es wirklich ist. Habe schon stunden gegooogelt nach MouseHooks oder Controls in DesignTime nur leider nichts passendes gefunden. Kann mir von jemand weiterhelfen oder kann mir vlt. sagen nach was ich suchen soll.

danke.

06.01.2011 - 16:30 Uhr

Hallo Spontifixus,

ich habe zb.: das Formular Kunden. Im Formular ist ein Load Ereigniss registriert
zur Designzeit. Im Load Event werden einige Sachen zugewiesen wie DB Connection usw...

In meiner UserAccountManagerForm habe ich den User Max Mustermann definiert, der darf im Kundenformular alle Daten bearbeiten nur das Textfeld Kontonummer nicht.

Um das jetzt komfortabel bearbeiten zu können lade ich mir das Kundenformular (das ist eine Library -> AddIn) per Reflection in ein TreeView das heißt ich lade alle in der Library vorhandenen Forms und deren Controls in das TreeView. Wenn ich nun auf einen Formeintrag im TreeView Klicke möchte ich eine Art Vorschau von dem Formular erstellen. Das klappt auch soweit nur das in diesem Fall das Load Ereigniss gefeuert wird und dort einige Parameter nicht zugewiesen oder vorhanden sind und ich dadurch einen Fehler bekomme.

Ich möchte erreichen das per Reflection der Type geladen wird und alle Events die registriert sind deregistriert werden. Ich brauche das nur um die Steuerelemente zu visualisieren.

ich hoffe ich konnte das einigermaßen schieldern.

06.01.2011 - 13:30 Uhr

Hi zusammen,

Ich stehe nun schon einige Zeit vor einem Problem das ich anscheinend nicht lösen kann.

Folgendes Szenario:
Ich habe mir einen UserAccount Manager gebastelt, mit diesem Manager möchte ich nun von all meinen Formularen Steuerelement Eigenschaften setzen das funzt auch soweit. Jetzt aber zu meinem Problem. Ich lade alle Steuerelemente von all meinen Formularen in eine TreeView mit


Activator.CreateInstance(Type()). 

Jetzt möchte ich aber zu den einzelnen Formularen eine Art Vorschau generieren denn unter txt_Opt_1 kann man sich wenig vorstellen was für ein Feld das ist. Jetzt muss ich aber nach dem CreateInstance Aufruf alle registrierten Events vom Formular und deren Steuerelementen löschen und das geht nicht. Mit


eventInfo.RemoveEventHandler(o, dynamicDelegate)

auf das Load Ereigniss vom Formular bezogen geschieht gar nichts.

Kann mir vlt. jemand helfen.

Danke.

11.11.2010 - 18:52 Uhr

Hallo zusammen,

Ich habe da ein Problem mit einer Sortierung einer Spalte in einer Tabelle.
Folgendes Problem
Ich bekomme eine Liste aus einer Abfrage die zb.: so aussieht->
1
5
7
3 + 4
8
9
2 + 6
10

nach einer normalen Sortierung kommt folgendes heraus
1
5
7
8
9
10
2 + 6
3 + 4

ich möchte aber folgendes realisieren
1
2 + 6
3 + 4
5
7
8
9
10

Wie kann ich sowas realisieren.
Der Type der Spalte ist ein string.

Danke für eure Hilfe

28.08.2010 - 16:17 Uhr

Hi Leute,

habe ein riesiges Verständnisproblem mit der Konfiguration in .Net 2.0.

Ich möchte gerne eine eigene ConfigurationSection erstellen nur das funkt nicht so wie ich mir das vorstelle. Habe schon einige Stunden gegoooogelt nur nichts gefunden was bei mir funktioniert.

Habe zb. folgenden Code gefunden......


using System;
using System.Configuration;

namespace MyLibrary
{
    public class MailManagerConfiguration : ConfigurationSection
    {
        public MailManagerConfiguration()
        {
        }
        [ConfigurationProperty("serverAddress",
            DefaultValue = "mail.northcomp.com",
            IsRequired = true)]
        public String MailServer
        {
            get
            {
                return (String)this["serverAddress"];
            }
            set
            { 
                this["serverAddress"] = value;
            }
        }
        [ConfigurationProperty("messageTemplate", IsRequired = true)]
        public String MessageTemplate
        {
            get
            { 
                return (String)this["messageTemplate"];
            }
            set
            { 
                this["messageTemplate"] = value;
            }
        }
        [ConfigurationProperty("baseURL", IsRequired = true)]
        public String BaseURL
        {
            get
            { 
                return (String)this["baseURL"];
            }
            set
            { 
                this["baseURL"] = value;
            }
        }
        [ConfigurationProperty("from",
        DefaultValue = "Eric Smith &lt;eric@northcomp.com&gt;",
           IsRequired = true)]
        public String ReturnAddress
        {
            get
            { 
                return (String)this["from"];
            }
            set
            { 
                this["from"] = value;
            }
        }
        [ConfigurationProperty("title", DefaultValue =
            "Announcement from Eric :: {0}", IsRequired = true)]
        public String TitleFormat
        {
            get
            { 
                return (String)this["title"];
            }
            set
            { 
                this["title"] = value;
            }
        }
    }
}


Code der App.config Datei

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <configSections>
    <section name="MailManagerConfiguration"
             type="MyLibrary.MailManagerConfiguration,
                     MyLibrary" />
  </configSections>
  <MailManagerConfiguration
     serverAddress="mail.myserver.com"
     messageTemplate="C:\Web\mailmanager\template.html"
     baseURL="http://www.northcomp.com"
     from="Northstar Computer Systems
         &lt;clientcenter@northcomp.com&gt;"
     title="My Web Site:: {0}" />



</configuration>

und zu guterletzt der Test


private void button1_Click(object sender, EventArgs e)
{
            MailManagerConfiguration config =
                (MailManagerConfiguration)System.Configuration.ConfigurationManager.GetSection
                ("MailManagerConfiguration");
}

Das sollte doch eigentlich funktionieren doch leider bekomme ich folgende Fehlermeldung

Beim Erstellen des Konfigurationsabschnittshandlers für "MailManagerConfiguration" ist ein Fehler aufgetreten.: Die Datei oder Assembly "MyLibrary" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden. (D:\Projekte\Versuche\C_Sharp_VS2005\ConfigSectionTester\ConfigSectionTester\bin\Debug\ConfigSectionTester.vshost.exe.config line 5)

Kann mir bitte jemand erklären warum das bei mir nicht funktioniert oder mir erklären wie das Konfigurationsmodell ansich funktioniert.

Bin für jede Antwort dankbar.

20.02.2010 - 20:06 Uhr

Danke für die Antworten,

Das von Joetempes funktioniert bei mir leider nicht,
ich mach das ganze mit dem iterieren das haut hin.

Danke nochmals

19.02.2010 - 22:02 Uhr

Hi Leute,

ich habe ein riesen Problem mit der Activator.CreateInstance Methode. Ich möchte gerne ein Steuerelement das als String in einer Datenbank vorliegt dynamisch erzeugen, nur funktioniert das bei mir leider nicht so wie ich mir das gedacht habe.

Habe folgendes schon versucht ->


object o = Activator.CreateInstance("System.Windows.Forms", "System.Windows.Forms.MenuStrip");

Da bekomme ich folgende Fehlermeldung:
Die Datei oder Assembly "System.Windows.Forms" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.


Type t = Type.GetType ("System.Windows.Forms.TextBox");

Da bekomme ich null zurück.


object o = Activator.CreateInstance ("System.Windows.Forms,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089", "System.Windows.Forms.MenuStrip");

Das ist das einzige was funktioniert, aber ich kann doch nicht von jeden Steuerelement den PublicKeyToken oder die Version kennen.
Es muß doch eine Möglichkeit geben um mit dem vollen Namen des Controls dieses zu erzeugen.

Kann mir da jemand helfen.

Bin für jede Hilfe dankbar?????????????????????????????

26.10.2009 - 17:24 Uhr

Stichwort Regex


using System.Text.RegularExpressions;
   .
   .
   .

private void button1_Click(object sender, EventArgs e)
        {
            Regex rxParam = new Regex("@([\\w_]+)", RegexOptions.Compiled);

            string _string = "Ihre Bestellung mit der BestellNr @BESTELLNR ist soeben versendet worden";
            string BESTELLNR = "2009005";

            foreach (Match m in rxParam.Matches(_string))
            {
                _string = Regex.Replace(_string, m.Value, BESTELLNR);
            }

            MessageBox.Show(_string);
        }

21.10.2009 - 00:29 Uhr

Hallo ErfinderDesRades,

Ich brauche keinen eigenen Editor bei mir kann ich den ToolStripCollectionEditor nicht finden.

Bei mir kannich im Designer problemlos ToolstripItems zufügen. Nämlich weil intern die ich glaub ToolstripItemCollection-Klasse bereits adäquat attributiert ist.

Hier glaube ich liegt mein Problem.
Kannst du mir vielleicht ein Snippet zukommen lassen?????????????

20.10.2009 - 12:25 Uhr

Hi Leute,

habe mal eine Frage zum CollectionEditor.

Ich möchte folgendes realisieren....
habe ein Control mit einem DataGridView und einem ToolStrip, dem ToolStrip
möchte ich zur DesignZeit ToolStrip Items hinzufügen das funzt aber nicht so ganz wie ich mir das vorstelle.

Codeauszug


[Editor(typeof(CollectionEditor), typeof(UITypeEditor)),
        DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
        public ToolStripItemCollection Items
        {
            get
            {
                //ToolStripItem[] items = new ToolStripItem[this.tbDefault.Items.Count];
                //for(int i=0; i<items.Length; i++)
                //{
                //    items[i] = this.tbDefault.Items[i];
                //}

                //return items;

                //if(this.tbDefault.Items.Count > 0)
                return this.tbDefault.Items;

                //return new ToolStripItemCollection(this.tbDefault, null);
            }
            set
            {
                this.tbDefault.Items.AddRange(value);
            }
        }

Ich denke mal das ich im Designer nicht den Collection Editor brauche sondern den
ToolStripCollectionEditor den finde ich aber nirgends. Laut MSDN ist dieser im Namspace System.Windows.Forms.Design (ToolStripCollectionEditor) versteckt bei mir aber nicht.

Habe das INet durchsucht konnte mir aber leider auch nicht wirklich helfen.

Ich hoffe ich habe des Problem einigermassen verständlich erklärt, bin für jede Hilfe dankbar.

30.09.2009 - 19:15 Uhr

Hallo zusammen,

habe eine Frage zu der Lib von WeifenLuo.

Ich benutze in meinem Projekt die Docking Dll von WeifenLuo und habe jetzt
im DockingPanel auf der MainForm ein ContextmenuStrip hinzugefügt. Bis hier hin
funkt auch alles aber nur bis hier hin.

Jetzt zu meinem Proplem:
Wie kann ich das jetzt machen das das ContextMenu nur aufklappt wenn ich
auf einem Reiter mit der Maus draufbin (siehe VS2005 rechtsklick auf einen MdiTab),
sonst soll eigentlich nichts aufklappen. Finde kein passendes Event oder etwas zum
überschreiben.

Habe schon geggoogelt und verschiedene Foren durchsucht doch leider scheint es
bin ich der einzige mit diesem Problem.

Hoffe mir kann jemand helfen???????????????????????

mfg.:

27.08.2009 - 10:36 Uhr

Sieh dir das mal an ICSharpCode.Core.

Ich machs mit dem SharpDevelop Kern, funktioniert nach einer gewissen Einarbeitungszeit wunderprächtig.

mfg

27.08.2009 - 10:32 Uhr

HI iced-t89,

NEIN....
Zum erstellen der Tabellen ist es natürlich ein Vorteil Access installiert zu haben.

mfg