Denk-Fehler beim Aktualisieren von Objekten

DrMueller

Erfahrenes Mitglied
Hallo Leute,

ich habe mich nach gefühlter Ewigkeit wieder an eine kleine App gesetzt. Nun scheint mir die Logik mein Objekt zu aktualisieren, obwohl ich das nicht will.

Hier der Code zum Laden der Bindings:

Code:
        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
        {
            EntityFAQ entityFAQ;
            int faqID = int.Parse(NavigationContext.QueryString["faqid"]);
            if (faqID == -1)
            {
                entityFAQ = new EntityFAQ();
                Logic.CurrentApp.DCFAQ.FAQs.InsertOnSubmit(entityFAQ);
            }
            else
                entityFAQ = Logic.CurrentApp.DCFAQ.FAQs.First(f => f.ID == faqID);

            Binding b = new Binding();
            b.UpdateSourceTrigger = UpdateSourceTrigger.Explicit;
            b.Path = new PropertyPath("Description");
            b.Source = entityFAQ;
            b.Mode = BindingMode.TwoWay;
            txtFAQDescription.SetBinding(TextBox.TextProperty, b);

            b = new Binding();
            b.UpdateSourceTrigger = UpdateSourceTrigger.Explicit;
            b.Path = new PropertyPath("Question");
            b.Source = entityFAQ;
            b.Mode = BindingMode.TwoWay;
            txtFAQQuestion.SetBinding(TextBox.TextProperty, b);

            b = new Binding();
            b.UpdateSourceTrigger = UpdateSourceTrigger.Explicit;
            b.Path = new PropertyPath("Answer");
            b.Source = entityFAQ;
            b.Mode = BindingMode.TwoWay;
            txtFAQAnswer.SetBinding(TextBox.TextProperty, b);
        }

Mit explicit sollte es ja unter keinen Umständen einfach so die Quelle updaten.
Und trotzdem. Wenn ich auf Abbrechen klicke:
Code:
        private void btnCancel_Click(object sender, EventArgs e)
        {
            Logic.CurrentApp.DCFAQ.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, Logic.CurrentApp.DCFAQ.FAQs);
            NavigationService.GoBack();
        }

Nach dem Refreshen wird mir das Objekt trotzdem geupdatet.

Das XAML sieht auch nicht spektakulär aus:

Code:
    <Grid x:Name="LayoutRoot" Background="Transparent">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <!--TitlePanel enthält den Namen der Anwendung und den Seitentitel-->
        <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
            <TextBlock x:Name="ApplicationTitle" Text="Siedler-App" Style="{StaticResource PhoneTextNormalStyle}"/>
        </StackPanel>

        <!--ContentPanel - zusätzliche Inhalte hier platzieren-->
        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
            <StackPanel>
                <TextBox x:Name="txtFAQDescription" />
                <StackPanel Orientation="Vertical">
                    <TextBlock Text="Frage:" />
                    <TextBox x:Name="txtFAQQuestion" Style="{StaticResource txtBig}" />
                </StackPanel>
                <StackPanel Orientation="Vertical">
                   <TextBlock Text="Antwort:" />
                    <TextBox x:Name="txtFAQAnswer" Style="{StaticResource txtBig}" />
                </StackPanel>
            </StackPanel>
        </Grid>
    </Grid>

BTW: das Refresh habe ich zu Testzwecken eingefügt, ist sonst eigentlich nicht da.


Hat da jemand eine Idee, was ich hier falsch mache? Ich habe nichts gefunden, auch in meinen früheren Versuchen gehe ich eigentlich genau so vor, wobei ich diese nie wirklich 100% getestet habe.


Wie immer vielen Dank im Voraus und möge der Freitag schnell vorbei gehen.



Müller Matthias
 
Zurück