Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Не обновляется datatriiger после обновления данных / 6 сообщений из 6, страница 1 из 1
07.05.2015, 14:58
    #38953654
Алексей Ку.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не обновляется datatriiger после обновления данных
Добрый день!

Столкнулся с такой бедой:
Есть на форме контрол:
Код: 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
07.05.2015, 15:14
    #38953677
Алексей Ку.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не обновляется datatriiger после обновления данных
Алексей Ку.,

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

p_GetTaresForReturnResult.IsReturned - покажите код свойсва. RaisePropertyChanged("IsReturned"); должен быть там.
...
Рейтинг: 0 / 0
07.05.2015, 17:14
    #38953856
Алексей Ку.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не обновляется datatriiger после обновления данных
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
07.05.2015, 18:38
    #38953959
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не обновляется datatriiger после обновления данных
Алексей Ку.,


p_GetTaresForReturnResult должен реализовывать INotifyPropertyChanged, и, соответственно, в сеттере IsReturned, должна происходить нотификация.
...
Рейтинг: 0 / 0
07.05.2015, 20:53
    #38954069
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не обновляется datatriiger после обновления данных
зачем эта хиромантия со стилем?
шаблон 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
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Не обновляется datatriiger после обновления данных / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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