Laden...

Problem mit einem Binding

Erstellt von mikefried vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.372 Views
M
mikefried Themenstarter:in
198 Beiträge seit 2010
vor 13 Jahren
Problem mit einem Binding

Hallo an alle!

ich habe ein Problem mit einem Binding. Hier mal der Beispielcode xaml des WPF Projektes:


<Window x:Class="test.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="370" Width="535">
    <StackPanel>
        <FlowDocumentPageViewer Height='100' >
            <FlowDocument>
                <Paragraph>
                    <Run>Intro Text</Run>
                    <Run x:Name='changeMeRun'>
                        Lorem Ipsum  </Run>
                </Paragraph>
            </FlowDocument>
        </FlowDocumentPageViewer>
        <Button x:Name='ChangeTextButton'
          Click='ChangeTextButton_Click'
          Content='ChangeText' />

        <TextBox Name="txb1" Background="Bisque" Text='{Binding ElementName=changeMeRun, Mode=OneWay,Path=Text}'/>

        <StackPanel>
            <TextBlock Width="248" Height="24" Text="Colors:" 
        TextWrapping="Wrap"/>
            <ListBox x:Name="lbColor" Width="248" Height="56">
                <ListBoxItem Content="Blue"/>
                <ListBoxItem Content="Green"/>
                <ListBoxItem Content="Yellow"/>
                <ListBoxItem Content="Red"/>
                <ListBoxItem Content="Purple"/>
                <ListBoxItem Content="Orange"/>
            </ListBox>
            <TextBlock Width="248" Height="24" Text="You selected color:" />
            <TextBlock Width="248" Height="24"  
                       Text="{Binding ElementName=lbColor, Path=SelectedItem.Content, Mode=OneWay}" 
                       Background="{Binding ElementName=lbColor, Path=SelectedItem.Content,  Mode=OneWay}">
                   </TextBlock>
        </StackPanel>

    </StackPanel>
</Window>

und die codebehind:


 private void ChangeTextButton_Click(object sender, RoutedEventArgs e)
        {
            changeMeRun.Text = DateTime.Now.ToLongTimeString();
             
        }

wenn ich den button ChangeTextButton clicke ändert sich der Text von changeMeRun nur der text vom Binding also von txb1 wird nicht mitgeändert.

Wenn ich nun das selbe bindingprinzip auf eine listbox lbColor und einen TextBlock lege funktioniert es sehr gut. Immer wenn ich die Listbox neu wähle wird der text geändert.

kann mir wer sagen wo mein Fehler ist!

Gruß Mike

1.044 Beiträge seit 2008
vor 13 Jahren

Hallo mikefried,

verwende UpdateSourceTrigger mit PropertyChanged.

zero_x

M
mikefried Themenstarter:in
198 Beiträge seit 2010
vor 13 Jahren

hallo Danke für die Antwort,

das hatte ich aber schon:


<TextBox Name="txb1" Background="Bisque" Text='{Binding ElementName=changeMeRun, Mode=OneWay,Path=Text, UpdateSourceTrigger=PropertyChanged}'/>

funktioniert aber nicht. Da muss noch ein anderer Denkfehler sein?

Gruss Mike

1.552 Beiträge seit 2010
vor 13 Jahren

Hallo mikefried,

hab deinen Code probiert.
Wenn ich auf den Button klicke steht oben "Intro Text + Zeit" und unter dem Button nur die Zeit. So sollte es ja sein. Bei jedem Klick wird oben und unten die Zeit aktualisiert. Bist du dir sicher dass dir die XAML kompiliert? Ich hatte nämlich auch mal das Problem dass mir die Änderungen in der XAML nicht kompiliert werden

Gruß
Michael

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

M
mikefried Themenstarter:in
198 Beiträge seit 2010
vor 13 Jahren

das verstehe ich nicht bei mir geht es nicht und die xaml wird kompiliert. wenn ich zum beispiel den Text von Lorem Ipsum auf Lorem IpsumXXXX ändere wird diese änderung übernommen.

Mensch wo liegt den nun mein Fehler?

M
mikefried Themenstarter:in
198 Beiträge seit 2010
vor 13 Jahren

also wenn ich den code in ein neues Projekt kopiere geht es auch wieder nicht!