Witam.
Piszę aplikację która porównuje konkretne rzeczywiste statystyki komputera z danymi z bazy danych w excelu. Pobrane dane są składowane w kilku klasach: Computer, Mainboard, RAM, Storage, SWM. Tworzę po dwie osobne instancje tych klas i odpowiednio binduję każde pole do odpowiedniego TextBlocku. Aplikacja działa w porządku, przy uruchomieniu pobiera dane z komputera za pomocą WMI jak i z excela i wypisuje zestawienie.
Problem pojawia się kiedy chcę wczytać inne dane z pliku excel - pomimo że kod zdarzenia się wykonuje, dane w kontrolkach nie odświeżają się i nie mam zielonego pojęcia dlaczego. Udostępniam te klasy które sądzę że są potrzebne do analizy problemu. Nie mogę dodać wszystkiego w jednym poście, bo przekraczam 15k znaków, więc dodam w kolejnych postach.
Moje pytanie brzmi: jak poprawnie zbindować kontrolki do konkretnych właściwości aby odświeżały się przy każdej zmianie zaznaczenia modelu w tabeli? Ustalenie Mode na TwoWay i UpdateSourceTrigger na PropertyChanged, zmiana kontrolki na TextBox nie daje efektu.
<Grid x:Name="spReader" Grid.Row="0" Grid.Column="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<!--51 wierszy - 2 wiersze połaczone w jeden, brak jednego separatora-->
<!--==============================OGÓLNE DANE==============================-->
<Label Content="Dane z pliku" Grid.Row="0" Grid.Column="0" HorizontalContentAlignment="Center" FontSize="15" FontWeight="Bold" Background="LightSkyBlue" Padding="5"/>
<Separator Grid.Row="1" Grid.Column="0"/>
<TextBox x:Name="test" Text="{Binding Komputer.MD, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Grid.Row="2" Grid.Column="0" HorizontalAlignment="Center" FontSize="12" FontWeight="Bold" Padding="5"/>
<Separator Grid.Row="3" Grid.Column="0"/>
<TextBlock Text="{Binding Komputer.MSN}" Grid.Row="4" Grid.Column="0" HorizontalAlignment="Center" FontSize="12" FontWeight="Bold" Padding="5"/>
<Separator Grid.Row="5" Grid.Column="0"/>
<TextBlock Text="{Binding Komputer.System}" Grid.Row="6" Grid.Column="0" HorizontalAlignment="Center" FontSize="12" FontWeight="Bold" Padding="5"/>
<Separator Grid.Row="7" Grid.Column="0"/>
<TextBlock Text="{Binding Komputer.Kolor}" Grid.Row="8" Grid.Column="0" HorizontalAlignment="Center" FontSize="12" FontWeight="Bold" Padding="5"/>
<Separator Grid.Row="9" Grid.Column="0"/>
<!--==============================SWM Z DYSKÓW==============================-->
<Label Content="SWM" Grid.Row="10" Grid.Column="0" HorizontalContentAlignment="Center" FontSize="15" FontWeight="Bold" Padding="5" Background="LightSkyBlue"/>
<Separator Grid.Row="11" Grid.Column="0"/>
<TextBlock Text="{Binding Komputer.Swm[0].Swm}" Grid.Row="12" Grid.Column="0" HorizontalAlignment="Center" FontSize="12" FontWeight="Bold" Padding="5"/>
<Separator Grid.Row="13" Grid.Column="0"/>
<TextBlock Text="{Binding Komputer.Swm[1].Swm}" Grid.Row="14" Grid.Column="0" HorizontalAlignment="Center" FontSize="12" FontWeight="Bold" Padding="5"/>
<Separator Grid.Row="15" Grid.Column="0"/>
<TextBlock Text="{Binding Komputer.Swm[2].Swm}" Grid.Row="16" Grid.Column="0" HorizontalAlignment="Center" FontSize="12" FontWeight="Bold" Padding="5"/>
<Separator Grid.Row="17" Grid.Column="0"/>
<!--==============================WEAR LEVEL==============================-->
<Label Content="Max Wear Level" Grid.Row="18" Grid.Column="0" HorizontalContentAlignment="Center" FontSize="15" FontWeight="Bold" Padding="5" Background="LightSkyBlue"/>
<Separator Grid.Row="19" Grid.Column="0"/>
<TextBlock Text="{Binding Path=Komputer.WearLevel[0], StringFormat={}{0}%}" Grid.Row="20" Grid.Column="0" HorizontalAlignment="Center" FontSize="12" FontWeight="Bold" Padding="5"/>
<Separator Grid.Row="21" Grid.Column="0"/>
<TextBlock Text="{Binding Komputer.WearLevel[0], StringFormat={}{0}%}" Grid.Row="22" Grid.Column="0" HorizontalAlignment="Center" FontSize="12" FontWeight="Bold" Padding="5"/>
<Separator Grid.Row="23" Grid.Column="0"/>
<!--==============================DANE PŁYTY GŁÓWNEJ==============================-->
<Label Content="Płyta główna" Grid.Row="24" Grid.Column="0" HorizontalContentAlignment="Center" FontSize="15" FontWeight="Bold" Padding="5" Background="LightSkyBlue"/>
<Separator Grid.Row="25" Grid.Column="0"/>
<TextBlock Text="{Binding PlytaGlowna.Model}" Grid.Row="26" Grid.Column="0" HorizontalAlignment="Center" FontSize="12" FontWeight="Bold" Padding="5"/>
<Separator Grid.Row="27" Grid.Column="0"/>
<TextBlock Text="{Binding PlytaGlowna.ID}" Grid.Row="28" Grid.Column="0" HorizontalAlignment="Center" FontSize="12" FontWeight="Bold" Padding="5"/>
<Separator Grid.Row="29" Grid.Column="0"/>
<TextBlock Text="{Binding PlytaGlowna.WersjaBios}" Grid.Row="30" Grid.Column="0" HorizontalAlignment="Center" FontSize="12" FontWeight="Bold" Padding="5"/>
<Separator Grid.Row="31" Grid.Column="0"/>
<!--==============================RAM==============================-->
<!--UWAGA! Ram zajmuje tutaj dwa miejsca - dwa wiersze-->
<Label Content="Pamięć RAM" Grid.Row="32" Grid.Column="0" HorizontalContentAlignment="Center" FontSize="15" FontWeight="Bold" Background="LightSkyBlue"/>
<Separator Grid.Row="33" Grid.Column="0"/>
<!--Height ustawiony na sztywno - 2 * 16(wysokosc automatyczna) + 5 * 4(padding z dwóch textBlocków z góry i z dołu) + 5 (???)-->
<TextBlock Text="{Binding Ram.Pojemnosc, StringFormat={}{0}GiB}" Grid.Row="34" Grid.Column="0" HorizontalAlignment="Center" TextAlignment="Justify" FontSize="12" FontWeight="Bold" Height="57" VerticalAlignment="Center" Grid.RowSpan="2" Padding="5"/>
<Separator Grid.Row="36" Grid.Column="0"/>
<!--==============================DYSKI TWARDE==============================-->
<Label Content="Dyski" Grid.Row="37" Grid.Column="0" HorizontalContentAlignment="Center" FontSize="15" FontWeight="Bold" Padding="5" Background="LightSkyBlue"/>
<Separator Grid.Row="38" Grid.Column="0"/>
<TextBlock Text="{Binding Dyski[0].Pojemnosc, StringFormat={}{0}GB}" Grid.Row="39" Grid.Column="0" HorizontalAlignment="Center" FontSize="12" FontWeight="Bold" Padding="5"/>
<Separator Grid.Row="40" Grid.Column="0"/>
<TextBlock Text="{Binding Dyski[1].Pojemnosc, StringFormat={}{0}GB}" Grid.Row="41" Grid.Column="0" HorizontalAlignment="Center" FontSize="12" FontWeight="Bold" Padding="5"/>
<Separator Grid.Row="42" Grid.Column="0"/>
<!--==============================POZOSTAŁE DANE==============================-->
<Label Content="Pozostałe" Grid.Row="43" Grid.Column="0" HorizontalContentAlignment="Center" FontSize="15" FontWeight="Bold" Padding="5" Background="LightSkyBlue"/>
<Separator Grid.Row="44" Grid.Column="0"/>
<TextBlock Text="{Binding Komputer.Obudowa}" Grid.Row="45" Grid.Column="0" HorizontalAlignment="Center" FontSize="12" FontWeight="Bold" Padding="5"/>
<Separator Grid.Row="46" Grid.Column="0"/>
<TextBlock Text="{Binding Komputer.ShippingMode}" Grid.Row="47" Grid.Column="0" HorizontalAlignment="Center" FontSize="12" FontWeight="Bold" Padding="5"/>
<Separator Grid.Row="48" Grid.Column="0"/>
<TextBlock Text="{Binding Komputer.LCD}" Grid.Row="49" Grid.Column="0" HorizontalAlignment="Center" FontSize="12" FontWeight="Bold" Padding="5"/>
<Separator Grid.Row="50" Grid.Column="0"/>
<TextBlock Text="{Binding Komputer.PelnyModel}" Grid.Row="51" Grid.Column="0" HorizontalAlignment="Center" FontSize="12" FontWeight="Bold" Padding="5"/>
</Grid>