powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Не обновляется datatriiger после обновления данных
6 сообщений из 6, страница 1 из 1
Не обновляется datatriiger после обновления данных
    #38953654
Алексей Ку.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

Столкнулся с такой бедой:
Есть на форме контрол:
Код: xml
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.
         <Grid>
        <Grid.RowDefinitions>
            <RowDefinition ></RowDefinition>
            <RowDefinition Height="3*"></RowDefinition>
        </Grid.RowDefinitions>

        <TextBlock Grid.Row="0" Grid.Column="0" Text="{Binding TaresToReturn, StringFormat='К возврату: {0}'}"></TextBlock>

        <ItemsControl Grid.Row="1" ItemsSource="{Binding Tares}" Margin="5">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapPanel Orientation="Horizontal" />
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>

            <ItemsControl.ItemTemplate>
                <DataTemplate DataType="tareReturnController:p_GetTaresForReturnResult">
                    <Border Width="100" Height="30" Margin="10">
                        <Grid>
                            <TextBlock Text="{Binding barcode}" FontSize="15">
                                <TextBlock.Style>
                                    <Style>
                                        <Style.Triggers>
                                            <DataTrigger Binding="{Binding IsReturned, Mode=TwoWay}" Value="false">
                                                <Setter Property="TextBlock.Background" Value="Red"/>
                                            </DataTrigger>
                                            <DataTrigger Binding="{Binding IsReturned, Mode=TwoWay}" Value="true">
                                                <Setter Property="TextBlock.Background" Value="Green"/>
                                            </DataTrigger>
                                        </Style.Triggers>
                                    </Style>
                                </TextBlock.Style>
                            </TextBlock>
                        </Grid>
                    </Border>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </Grid>



В ViewModel есть след.:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
        private ObservableCollection<p_GetTaresForReturnResult> tares_;
        public ObservableCollection<p_GetTaresForReturnResult> Tares
        { get { return tares_; } set { tares_ = value; } }

        public int TaresToReturn
        { get { return Tares.Count(t => Convert.ToBoolean(t.IsReturned) == false); } }

        public void ScannerOnOnBarcodeReceived(string[] _args)
        {
            foreach (string barcode in _args)
            {
                var tt = Tares.FirstOrDefault(t => t.barcode.ToLower().Trim() == barcode.ToLower().Trim());
                if (tt != null)
                {
                    tt.IsReturned = !tt.IsReturned;
                    tt.barcode = "1";
                    RaisePropertyChanged("Tares");
                    RaisePropertyChanged("barcode");
                    RaisePropertyChanged("IsReturned");
                    RaisePropertyChanged("TaresToReturn");
                }
            }
        }




Вот после срабатывания SomeEvent смена данных в коллекции происходит.
TextBlock привязанный к TaresToReturn меняется.

А вот цвет TextBlock`а в ItemsControl ну никак не обновляется!
Я уже добавил всё что можно, но ни цвет, ни текст не обновляется! Что я упустил?
...
Рейтинг: 0 / 0
Не обновляется datatriiger после обновления данных
    #38953677
Алексей Ку.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Ку.,

Интересно то, что если добавить в коллекцию новый элемент, то он добавится и отобразится! А вот уже отрисованный (старый элемент) не обновится!
...
Рейтинг: 0 / 0
Не обновляется datatriiger после обновления данных
    #38953845
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Ку.,

p_GetTaresForReturnResult.IsReturned - покажите код свойсва. RaisePropertyChanged("IsReturned"); должен быть там.
...
Рейтинг: 0 / 0
Не обновляется datatriiger после обновления данных
    #38953856
Алексей Ку.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch,

Это класс автоматически сгенерирований при создании Linq To Sql Classes.

В принципе вот полное описание класса:

Код: 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.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
	public partial class p_GetTaresForReturnResult
	{
		
		private int _id;
		
		private string _barcode;
		
		private System.Nullable<bool> _IsReturned;
		
		public p_GetTaresForReturnResult()
		{
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_id", DbType="Int NOT NULL")]
		public int id
		{
			get
			{
				return this._id;
			}
			set
			{
				if ((this._id != value))
				{
					this._id = value;
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_barcode", DbType="NChar(20)")]
		public string barcode
		{
			get
			{
				return this._barcode;
			}
			set
			{
				if ((this._barcode != value))
				{
					this._barcode = value;
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_IsReturned", DbType="Bit")]
		public System.Nullable<bool> IsReturned
		{
			get
			{
				return this._IsReturned;
			}
			set
			{
				if ((this._IsReturned != value))
				{
					this._IsReturned = value;
				}
			}
		}
	}

...
Рейтинг: 0 / 0
Не обновляется datatriiger после обновления данных
    #38953959
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Ку.,


p_GetTaresForReturnResult должен реализовывать INotifyPropertyChanged, и, соответственно, в сеттере IsReturned, должна происходить нотификация.
...
Рейтинг: 0 / 0
Не обновляется datatriiger после обновления данных
    #38954069
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зачем эта хиромантия со стилем?
шаблон DataTemplate допускает в свойстве Triggers добавлять DataTrigger'ы

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
        <DataTemplate x:Key="test" DataType="{x:Type system:DateTime}">
            <TextBlock Text="{Binding}" x:Name="PART_TextBlock"/>
            <DataTemplate.Triggers>
                <DataTrigger Binding="{Binding Date}" Value="{x:Static system:DateTime.Today}">
                    <Setter  TargetName="PART_TextBlock" Property="Background" Value="Blue" />
                </DataTrigger>
            </DataTemplate.Triggers>
        </DataTemplate>
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Не обновляется datatriiger после обновления данных
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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