Laden...

[Erledigt] WPF Binding - Problem auf anderen PC

Erstellt von ThomasE. vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.830 Views
T
ThomasE. Themenstarter:in
461 Beiträge seit 2013
vor 9 Jahren
[Erledigt] WPF Binding - Problem auf anderen PC

Guten Tag!

Das Thema ist wieder so ein Unikat, bei dem mir kein besserer Titel eingefallen ist 🙂 :

Folgende Zustände:

  1. Es gibt ein Ribbon UI-Programm in C# .NET4.0, daß im Grunde zur Datenverarbeitung dient.

  2. Dieses UI arbeitet fast ausschließlich mit Bindungen, was ja auch alles kein Problem ist.

  3. Das Programm liegt auf einem Netzwerkpfad, von dem aus jeder Benutzer das Programm ausführen kann.

  4. Es gibt gesamt 10 Rechner die das Programm verwenden. Bei einem Rechner gibt es dieses folgend seltsame Binding-Problem.

Das Problem des einen Rechners:
Sämtliche Bindungen funktionieren einwandfrei und ohne Probleme, abgesehen von einem:


               <ribbon:RibbonGroup Header="Eigenschaften">

                    <!--<ribbon:RibbonSeparator Style="{StaticResource ResourceKey=KeyRibbonSeparatorVertical}" Margin="6,0"/>-->

                    <Grid IsEnabled="{Binding Path=CanUserEditProperties, Mode=OneWay}">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition Width="Auto"/>
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="Auto"/>
                        </Grid.RowDefinitions>
                       
                        <TextBlock Text="Aktueller Status:" Grid.Column="0" Grid.Row="0" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="3"
                                   Foreground="{Binding Path=IsEnabledTextColor, Mode=OneWay}"/>
                        <StackPanel Orientation="Horizontal" Grid.Column="1" Grid.Row="0" HorizontalAlignment="Left" VerticalAlignment="Center">
                            <Image Source="{Binding Path=CurrentStatusImage, Mode=OneWay}" Width="16" Height="16" Margin="3,0"/>
                            <TextBlock Text="{Binding Path=CurrentStatusText, Mode=OneWay}" Margin="3,0"
                                       Foreground="{Binding Path=IsEnabledTextColor, Mode=OneWay}"/>
                        </StackPanel>

                        <TextBlock Text="Status setzen:"  Grid.Column="0" Grid.Row="1"  HorizontalAlignment="Right" VerticalAlignment="Center" Margin="3"
                                   Foreground="{Binding Path=IsEnabledTextColor, Mode=OneWay}"/>
                        <ribbon:RibbonButton x:Name="buttSetNextStatus"  Grid.Column="1" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center"
                                             Label="{Binding Path=NextStatusText, Mode=OneWay}"
                                             SmallImageSource="{Binding Path=NextStatusImageSource, Mode=OneWay}"
                                             IsEnabled="{Binding Path=CanSetNextStatus, Mode=OneWay}" Click="buttSetNextStatus_Click" />

                        <ribbon:RibbonButton x:Name="buttResetStatus" Grid.Column="0" Grid.Row="2"  Label="Status zurücksetzen:" 
                                             SmallImageSource="/TQS.ProjectManager;component/Images/Redo_Small.png"
                                             IsEnabled="{Binding Path=CanStatusReset, Mode=OneWay}" Click="buttResetStatus_Click" />
                        <ComboBox x:Name="comboBoxResetStatus" Grid.Column="1" Grid.Row="2" HorizontalAlignment="Left" VerticalAlignment="Center" 
                                  Background="Transparent" Width="200"
                                  IsEnabled="{Binding Path=CanStatusReset, Mode=OneWay}"
                                  SelectedItem="{Binding Path=ResetStatusSelect, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                                  ItemsSource="{Binding Path=ResetStatusCollection, Mode=OneWay}">
                        </ComboBox>

                    </Grid>

                </ribbon:RibbonGroup>

Der Daten-Kontext wird folgender Maßen zugewiesen:


<ribbon:RibbonWindow x:Class="ProjectManager.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:ribbon="clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary"
        xmlns:local="clr-namespace:ProjectManager"
        Title="Programmverwaltung"
		x:Name="RibbonWindow"
		Width="1000" Height="800" Loaded="RibbonWindow_Loaded" Closing="RibbonWindow_Closing"
        FontSize="14" Icon="/ProjectManager;component/Images/ampel_32.png"
        DataContext="{Binding RelativeSource={RelativeSource Self}}"

        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
        mc:Ignorable="d" 
        d:DataContext="{d:DesignInstance {x:Type local:MainWindow}}">

Genau an diesen Stellen werden, im Gegenzug zu den anderen Bindungen und PC's, die Bindungseigenschaften nur die ersten 2 Mal abgerufen, danach nicht mehr.
(Der DataContext wird nur 1Mal in XAML zugewiesen.)
(Konnte getestet werden, weil auf dem Rechner das VS2010 installiert ist.)

Kennt irgendjemand von Euch das Problem?
Was für Punkte kann ich noch durchgehen, um das Problem in den Griff zu bekommen?

Ich habe den Titel mal angepasst, so dass Suchende auch etwas damit anfangen können. EDIT: Ich sollte beim Wort "Shift" im Titel das "f" nicht vergessen... 😄

P
1.090 Beiträge seit 2011
vor 9 Jahren

Wenn es auf den anderen Rechnern läuft und nur auf einen nicht, würde ich mal schauen, welche Frameworks auf den Rechnen installiert sind. Achte mal besonders auf das Framework 4.5, mit im wurden auch ein paar Inline Updates für das Framework 4.0 ausgeliefert welche zu Problemen führen können.

So ist z.B. wenn nur das Frameworke 4.0 installiert ist das TowBinding an einer ReadOnly Property möglich, mit Installierten 4.5 wird bei der Verwendung von 4.0 eine Exception geschmissen.

Sollte man mal gelesen haben:

Clean Code Developer
Entwurfsmuster
Anti-Pattern

849 Beiträge seit 2006
vor 9 Jahren

Das Programm liegt auf einem Netzwerkpfad, von dem aus jeder Benutzer das Programm ausführen kann.

Schonmal probiert das Programm lokal zu kopiern? Netzwerkpfade haben manchmal interessante Nebenwirkungen. Vllt hat der eine Rechner andere Sicherheitseinstellungen.

J
641 Beiträge seit 2007
vor 9 Jahren
Das Tool...

Kennst du den WPF-Ispektor? Vielleicht kannst du mit dem was feststellen? https://wpfinspector.codeplex.com

cSharp Projekte : https://github.com/jogibear9988

T
ThomasE. Themenstarter:in
461 Beiträge seit 2013
vor 9 Jahren

Hallo und danke für Eure Meldungen!

@Palin hört sich interessant an, werd ich prüfen...

@unconnected ja, haben wir schon probiert, ist das gleiche Problem...

@jogibear9988 ebenfalls interessant, wenn Ersteres scheitert, werd ich auf jeden Fall den Inspektor benutzen...

Vielen Dank fürs Erste!

Ich habe den Titel mal angepasst, so dass Suchende auch etwas damit anfangen können. EDIT: Ich sollte beim Wort "Shift" im Titel das "f" nicht vergessen... 😄

T
ThomasE. Themenstarter:in
461 Beiträge seit 2013
vor 9 Jahren

Hallo nochmal,

@Palin du hattest recht!

Auf meinem Entwicklungsrechner ist schon das Framework 4.5 installiert, habe aber unter 4.0 entwickelt.

Auf dem betroffenen Rechner war aber nur das Framework 4.0 drauf. Im Vergleich zu den anderen PC's war auch das der Unterschied! Nach diesem Update:

http://www.microsoft.com/de-at/download/details.aspx?id=30653

funktionierte auch auf dem betroffenen Rechner das Programm wie gewohnt.

Vielen Dank für Eure Hilfe!

Ich habe den Titel mal angepasst, so dass Suchende auch etwas damit anfangen können. EDIT: Ich sollte beim Wort "Shift" im Titel das "f" nicht vergessen... 😄