powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF: Не работает задержка привязки ListBox-а к источнику значений.
3 сообщений из 3, страница 1 из 1
WPF: Не работает задержка привязки ListBox-а к источнику значений.
    #39031939
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привязал ListBox.ItemsSource к ObservableCollection с задержкой.

Задержка не отрабатывает - добавляешь элемент в коллекцию - добавляется сразу в список.

Кто-нить сталкивался?

Код: xml
1.
<ListBox ItemsSource="{Binding Source={StaticResource picList}, Delay=15000}" >
...
Рейтинг: 0 / 0
WPF: Не работает задержка привязки ListBox-а к источнику значений.
    #39032001
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читайте внимательнее MSDN:
When you use a binding to update the binding source whenever the value of the property changes on the target, you set the Mode property to TwoWay and the UpdateSourceTrigger to PropertyChanged. In this situation, you can use the Delay property to specify whether there should be a time delay between when the target is changed and when the source is updated. This is useful when you want to enable users to change a property on a source object but you don't want each change to be immediately committed to the source. For example, suppose that you have a text box that is data two-way bound to a property of a data object. When the user changes the value in the text box, the source gets updated. To enable this scenario, you set the Mode property on the Binding to TwoWay and the UpdateSourceTrigger to PropertyChanged. To avoid updating the source object with every keystroke, set the Delay property to a reasonable value to cause the binding to update only after that amount of time has elapsed since the user stopped typing.
https://msdn.microsoft.com/en-us/library/system.windows.data.bindingbase.delay(v=vs.110).aspx
Т.е. Delay работает 1) только на two-way биндингах; 2) только в направлении от target к source, но не наоборот:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<Grid>
  <Grid.RowDefinitions>
    <RowDefinition />
    <RowDefinition Height="Auto" />
  </Grid.RowDefinitions>
  <TextBox
    VerticalAlignment="Center"
    Text="{Binding Value, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, Delay=5000}" />
  <Button
    Grid.Row="1"
    Content="Change"
    Margin="5"
    Padding="5"
    VerticalAlignment="Center"
    HorizontalAlignment="Center"
    Command="{Binding ChangeValueCommand}" />
</Grid>


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
public partial class MainWindow
{
  public MainWindow()
  {
    InitializeComponent();
    var model = new MainModel();
    model.PropertyChanged += (sender, propertyName) => Console.WriteLine(propertyName);
    DataContext = model;
  }
}

public class MainModel : INotifyPropertyChanged
{
  public RelayCommand ChangeValueCommand { get; private set; }
  public MainModel()
  {
    ChangeValueCommand = new RelayCommand(() => Value = "Value");
  }

  string _value;
  public string Value
  {
    get { return _value; }
    set
    {
      _value = value;
      OnPropertyChanged();
    }
  }

  public event PropertyChangedEventHandler PropertyChanged;

  [NotifyPropertyChangedInvocator]
  protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
  {
    PropertyChangedEventHandler handler = PropertyChanged;
    if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
  }
}


- в это примере видно, что изменения значения в TextBox'е, прибинденного к свойству Value модели, вызывает изменения свойства с указанной задержкой, а изменение значения свойства модели по команде вызывает изменение значения в TextBox'е сразу же. Всё в соответствии с документацией.
...
Рейтинг: 0 / 0
WPF: Не работает задержка привязки ListBox-а к источнику значений.
    #39032038
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. МакДональд не счел нужным упомянуть об этих важных нюансах в своем учебнике, а я не догадался полезть в MSDN, посчитав, что смысл параметра прост, как валенок, уж тут-то какие могут быть нюансы ))
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF: Не работает задержка привязки ListBox-а к источнику значений.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]