[WPF] Mode=OneWay funzt nicht ?!



  • Heiho

    hier mal eine beispielapp

    <Grid>
        <ListView Margin="0,0,0,30.009" Name="_list" ItemsSource="{Binding}" IsSynchronizedWithCurrentItem="True" GridViewColumnHeader.Click="_Header_Click" SelectionMode="Single">
            <ListView.View>
                <GridView>
                    <GridView.Columns>
                        <GridViewColumn Width="120" Header="Vorname" x:Name="VornameWidth" DisplayMemberBinding="{Binding FirstName}"/>
                        <GridViewColumn Width="120" Header="Nachname" x:Name="NachnameWidth" DisplayMemberBinding="{Binding LastName}"/>
                        <GridViewColumn Width="120" Header="Geburtstag" x:Name="BirthDayWidth" DisplayMemberBinding="{Binding BirthDay}"/>
                    </GridView.Columns>
                </GridView>
            </ListView.View>
        </ListView>
        <WrapPanel Height="26" Name="wrapPanel1" VerticalAlignment="Bottom">
            <TextBox Height="23" Name="_firstName" MinWidth="120" Width="{Binding ElementName=VornameWidth, Path=Width}" DataContext="{Binding Path=SelectedItem, ElementName=_list}" Text="{Binding Path=FirstName}" />
            <TextBox Height="23" Name="_lastName" MinWidth="120" Width="{Binding ElementName=NachnameWidth, Path=Width}" DataContext="{Binding Path=SelectedItem, ElementName=_list}" Text="{Binding Path=LastName}" />
            <TextBox Height="23" Name="_birthDay" MinWidth="120" Width="{Binding ElementName=BirthDayWidth, Path=Width}" DataContext="{Binding Path=SelectedItem, ElementName=_list}" Text="{Binding Path=BirthDay}" />
            <Button Height="21" Name="Add" Width="39" Click="Add_Click" Content="Add"/>
            <Button Height="21" Name="Change" Width="39" Click="Change_Click" Content="Change"/>
        </WrapPanel>
    </Grid>
    

    durch
    DataContext="{Binding Path=SelectedItem, ElementName=_list}" Text="{Binding Path=FirstName}"
    in den textboxen werden diese immer mit dem selektierten item abgeglichen, und sobald man in der textbox etwas editiert wird es in der liste uebernommen
    nur
    ich brauch das eher oneway - also das es zwar das selektierte anzeigt, aber sich nicht so aendern laesst sofern man nicht explizit auf change klickt
    ich hab dafuer soetwas gemacht
    Text="{Binding Path=BirthDay, Mode=OneWay}"
    nur, nun werden die editboxen nicht mit dem selektierten item abgeglichen ?!
    geht es hier ueberhaupt mit dem OneWay - oder muss ich das selektierte item per code an die textboxen zuweisen ?



  • Schau mal hier:
    http://www.mycsharp.de/wbb2/thread.php?threadid=57391

    Du überschreibst den durch das Binding gelieferten Wert mit einem lokalen Wert (den du eingibst in die TextBox), damit wird das Binding entfernt.



  • hmm

    muss das da erstmal verstehen
    ist es dann nicht einfacher das fuellen der textboxen durch den code zu realisieren
    also beim click auf ein item die textboxen fuellen - komplett ohne binding ?!


Anmelden zum Antworten