Tworzenie aplikacji WPF MVVM (marzec 2021)

Seria pytań uczestników, które pojawiły się podczas szkolenia Tworzenie aplikacji WPF MVVM realizowanego w dniach 15-19.03.2021 r


W jaki sposób powiadamiać aplikację WPF o zmianach w bazie danych?

Polecam skorzystać z wbudowanego mechanizmu SQL Server o nazwie Service Broker.

Po włączeniu tej usługi możemy zdefiniować zapytanie SQL, które ""nasłuchuje"" wybrany zbiór danych. Jeśli pojawi się jakaś zmiana (insert, update, delete), to zostanie wysłany komunikat do kolejki.

Taka kolejka można być obsługiwana w .NET za pomocą klasy SqlDependency lub SqlNotificationRequest.

W przypadku SqlDependency otrzymujemy zdarzenie OnChange.

Jak można połączyć tekst w jedno pole w widoku?

Jeśli mamy tylko połączyć tekst, to najwygodniej będzie jeśli skorzystamy z MultiBinding i wlaściwości StringFormat:


<TextBlock>
                <TextBlock.Text>
                    <MultiBinding StringFormat="{}{0} {1}">
                        <Binding Path="SelectedCustomer.FirstName" />
                        <Binding Path="SelectedCustomer.LastName" />
                    </MultiBinding>
                </TextBlock.Text>
            </TextBlock>
 

Natomiast w bardziej skomplikowanym przypadku możemy utworzyć IMultiValueConverter i podpiąć do Bindingu:


 <Ellipse.Fill>
                    <SolidColorBrush>
                       <SolidColorBrush.Color>
                            <MultiBinding Converter="{StaticResource ColorConverter}">
                                <Binding ElementName="R" Path="Value" />
                                <Binding ElementName="G" Path="Value" />
                                <Binding ElementName="B" Path="Value" />
                            </MultiBinding>
                        </SolidColorBrush.Color>
                    </SolidColorBrush>
                </Ellipse.Fill>
 

Czy WPF ma przyszłość?

Generalnie WinForms, WPF nie jest już rozwijany, choć znalazło się dla nich wsparcie w .NET Core 3 i .NET 5. Microsoft wskazuje, że przyszłością ma być framework MAUI oraz Blazor Desktop App. Musimy poczekać do .NET 6.