Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Не видит реальных данных при биндинге


Автор: DenWPF 4.3.2010, 15:24
Вообщем есть у меня биндинг от класса.
когда програ заппущена я могу менять в  TextBox значение. и надо его сохранить.
но вот проблема если я к этому элементу добираюсь он как был пустой так и остается, хотя данные на экране видны.

Автор: HalkaR 4.3.2010, 15:51
Покажи XAML.

Автор: DenWPF 4.3.2010, 20:12
Код

<ListBox HorizontalAlignment="Stretch" ItemsSource="{Binding time}" d:LayoutOverrides="Height" Grid.Row="0" Grid.Column="2">
                                                                         <ListBox.ItemTemplate>
                                                                             <DataTemplate>
                                                                                 <DockPanel x:Name="stackpaneltextboxtime" HorizontalAlignment="Stretch" Tag="{Binding}" Width="Auto">
                                                                                     <TextBox Text="{Binding Tag, ElementName=stackpaneltextboxtime}" />
                                                                                 </DockPanel>
                                                                             </DataTemplate>
                                                                         </ListBox.ItemTemplate>
                                                                     </ListBox>

Автор: HalkaR 4.3.2010, 22:31
DenWPF, не понял если честно что и к чему ты биндишь, но 
Код

Text="{Binding Tag, ElementName=stackpaneltextboxtime}
Видимо по умолчанию Mode=OneTime. Попробуй
 
Код

Text="{Binding Tag, ElementName=stackpaneltextboxtime, Mode=OneWay}
Во вторых, что это?
Код

Tag="{Binding}"

Автор: DenWPF 4.3.2010, 23:53
ок, попробую.
А это обычный биндинг, если видов элементов 1 то можно не писать их имя.

Автор: HalkaR 5.3.2010, 00:26
Цитата(DenWPF @  4.3.2010,  23:53 Найти цитируемый пост)
если видов элементов 1 то можно не писать их имя. 
Видов каких элементов? В смысле DataContext?

Автор: DenWPF 10.3.2010, 21:01
ну да. 
так что подскажите ?

Автор: HalkaR 11.3.2010, 01:33
Советы не помогли?

Автор: DenWPF 12.3.2010, 15:42
неа.

 <TextBox Text="{Binding count}" TextWrapping="Wrap" HorizontalAlignment="Stretch" d:LayoutOverrides="Height" Grid.Row="0" Grid.Column="1"/>
нормально просматривается а вот внутренний лист бокс нет

Код


                                <Grid Tag="{Binding Text, ElementName=uppertexBox}" HorizontalAlignment="Stretch" Width="Auto" Height="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.HorizontalScrollBarVisibility="Auto" MaxHeight="301">
                     <Grid.ColumnDefinitions >
                      <ColumnDefinition/>
                      <ColumnDefinition/>
                      <ColumnDefinition/>
                      <ColumnDefinition/>
                      <ColumnDefinition/>
                     </Grid.ColumnDefinitions>
                     <TextBlock x:Name="textTimeBlock" Text="{Binding TitleTime}" Tag="{Binding Text, ElementName=uppertexBox2}" TextWrapping="Wrap" HorizontalAlignment="Stretch" d:LayoutOverrides="Height" MinWidth="75"/>
                     <TextBox Text="{Binding count}" TextWrapping="Wrap" HorizontalAlignment="Stretch" d:LayoutOverrides="Height" Grid.Row="0" Grid.Column="1"/>
                     <ListBox HorizontalAlignment="Stretch" ItemsSource="{Binding time}" d:LayoutOverrides="Height" Grid.Row="0" Grid.Column="2">
                      <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
             <VirtualizingStackPanel 
                    Orientation="Horizontal" 
                    IsItemsHost="True" />
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
        <ListBox.ItemTemplate>
                          <DataTemplate>
                              <DockPanel x:Name="stackpaneltextboxtime" HorizontalAlignment="Stretch" Tag="{Binding}" Width="Auto">
                                  <TextBox Text="{Binding Tag, ElementName=stackpaneltextboxtime, Mode=OneWay}" />

                              </DockPanel>
                          </DataTemplate>
                      </ListBox.ItemTemplate>
                     </ListBox>
                     <TextBox Margin="0" Text="" TextWrapping="Wrap" d:LayoutOverrides="Width, Height" Grid.Column="3" MinWidth="5"/>
                     <Button Tag="{Binding Text, ElementName=textTimeBlock}" Content="+" d:LayoutOverrides="Height" Grid.Column="4" FontSize="16" FontWeight="Bold" Click="TimeAdd"/>
                                </Grid>


Автор: HalkaR 12.3.2010, 16:12
При замене на <TextBox Text="{Binding}" /> что-нибудь меняется?

Автор: DenWPF 12.3.2010, 17:52
не понял. на что заменить?

Автор: HalkaR 12.3.2010, 23:44
Сорри, что-то неправильно написалось. Заменить 
Код

<TextBox Text="{Binding Tag, ElementName=stackpaneltextboxtime, Mode=OneWay}" />
 на 
Код

<TextBox Text="{Binding}" />
не пробовал?

Автор: DenWPF 14.3.2010, 10:57
нет, я же говорю ошибку выдивает Для двусторонней сборки требуется Path или XPath.

Автор: HalkaR 14.3.2010, 17:15
Цитата(DenWPF @  14.3.2010,  10:57 Найти цитируемый пост)
нет, я же говорю ошибку выдивает Для двусторонней сборки требуется Path или XPath. 

Ну пропиши Mode=OneWay.

Автор: DenWPF 14.3.2010, 20:54
неа так не пашет.
Код

                                                                                 <DockPanel x:Name="stackpaneltextboxtime" HorizontalAlignment="Stretch" Tag="{Binding}" Width="Auto">
                                                                                     <TextBox Text="{Binding Tag, ElementName=stackpaneltextboxtime, Mode=OneWay}" />
                                                                                 </DockPanel>

Автор: HalkaR 15.3.2010, 13:09
Нет, во так работает?
Код

<TextBox Text="{Binding Mode=OneWay}" />

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)