Skocz do zawartości

[Sfera + WPF] Application.Resources i ciemny motyw

Polecane posty

Witam. Mam trzy problemy w związku z tworzonym przeze mnie rozwiązaniu Sferycznym WPF.

1. Po dodaniu dowolnego wpisu pomiędzy

<Application.Resources>

</Application.Resources>

każde okienko wywoływane ze Sfery jest puste. I nie ważne co tam dodam. Oczywiście można to obejść w code behind, ale wówczas VS nie stosuje stylów w designerze. Oczywiście uważam to za poważny błąd lub niedopatrzenie. Ogranicza to znacznie możliwość swobodnego stylowania aplikacji. Żeby wszystko działało, resources aplikacji musi być puste.

2. Nigdzie nie znalazłem opisu lub nakierowania na zmianę motywu okienek Sfery. Na co dzień korzystam z ciemnego motywu, rozwiązanie sferyczne również robię w ciemnym stylu, a tu okienka sfery białe. Kiepsko to się komponuje, a dodatkowo niektóre elementy są nieczytelne, ponieważ sfera używa w nich ustawień styli z mojego programu, co widać na załączonym zrzucie (przy formach płatności szczególnie).

3. Czy wszystkie składniki Sfery muszą być wczytywane, nawet jeśli z nich nie korzystam? Ładowanie całości trwa dość długo i zastanawiam się jak by to zoptymalizować.

 

Sfera do nexo pro w najnowszej wersji.

Schowek01.jpg

Link to postu
W dniu 21.11.2022 o 21:47, Tomasz Ochnio napisał:

1. Po dodaniu dowolnego wpisu pomiędzy

<Application.Resources>

</Application.Resources>

każde okienko wywoływane ze Sfery jest puste. I nie ważne co tam dodam. Oczywiście można to obejść w code behind, ale wówczas VS nie stosuje stylów w designerze. Oczywiście uważam to za poważny błąd lub niedopatrzenie. Ogranicza to znacznie możliwość swobodnego stylowania aplikacji. Żeby wszystko działało, resources aplikacji musi być puste.

Niestety, nasz mechanizm aplikowania zasobów należących do motywu jest bardzo bezwzględny i dodaje oraz usuwa zasoby na poziomie aplikacji. Doskonale rozumiem Pana zarzut - to faktycznie mocno ogranicza kontrolę nad stylami we własnej aplikacji. Obawiam się jednak, że w najbliższych wersjach nie planujemy żadnych zmian w tym zakresie.

Chciałabym się dowiedzieć więcej na temat pańskiej aplikacji i tego jak jest zbudowana, bo to pomoże w planowaniu ewentualnych zmian po naszej stronie. 

  • Czy to jest aplikacja WPF?
  • Jak wygląda dziedziczenie po klasie InsERT.Moria.Sfera.AplikacjaWpf? 
  • Gdzie są zdefiniowane pańskie style kontrolek, np. ten, który widać w sekcji płatności? Chciałabym ustalić, którędy on się dostał do naszego okna. 
W dniu 21.11.2022 o 21:47, Tomasz Ochnio napisał:

Nigdzie nie znalazłem opisu lub nakierowania na zmianę motywu okienek Sfery. Na co dzień korzystam z ciemnego motywu, rozwiązanie sferyczne również robię w ciemnym stylu, a tu okienka sfery białe.

Aktualnie w Sferze nie ma możliwości zmiany motywu na ciemny, ale dodamy to w jednej z najbliższych wersji. 

W dniu 21.11.2022 o 21:47, Tomasz Ochnio napisał:

Czy wszystkie składniki Sfery muszą być wczytywane, nawet jeśli z nich nie korzystam?

Tak, wszystko musi być załadowane. 

Link to postu

Witam i dziękuję za odpowiedź.

 

11 godzin temu, Katarzyna Rozmarynowska napisał:
  • Czy to jest aplikacja WPF?

Tak, jest to aplikacja WPF.

 

10 godzin temu, Katarzyna Rozmarynowska napisał:
  • Jak wygląda dziedziczenie po klasie InsERT.Moria.Sfera.AplikacjaWpf?

Dziedziczenie standardowo według instrukcji:

<sferaUI:AplikacjaWpf x:Class="Subiekt.ExpertDoor.App"
                      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                      xmlns:sferaUI="clr-namespace:InsERT.Moria.Sfera;assembly=InsERT.Moria.Sfera.UI"
                      xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
                      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
                      mc:Ignorable="d"
                      StartupUri="/Views/LoadingWindow.xaml"
                      ShutdownMode="OnLastWindowClose">
    <sferaUI:AplikacjaWpf.Resources>
        
    </sferaUI:AplikacjaWpf.Resources>
</sferaUI:AplikacjaWpf>
public partial class App : AplikacjaWpf
{
...
}

 

11 godzin temu, Katarzyna Rozmarynowska napisał:
  • Gdzie są zdefiniowane pańskie style kontrolek, np. ten, który widać w sekcji płatności? Chciałabym ustalić, którędy on się dostał do naszego okna. 

Domyślałem się, że Sfera nadpisuje sekcję zasobów podczas tworzenia, dlatego Style kontrolek wczytywane są z opóźnieniem po załadowaniu wszystkich składników Sfery w klasie App w przeładowaniu metody OnStartup

protected override void OnStartup(StartupEventArgs e)
{
	...
	var res = Resources;
    res.MergedDictionaries.Add(new ResourceDictionary { Source = new System.Uri("/UI.xaml", UriKind.RelativeOrAbsolute) });
}

Prawdopodobnie style są używane również przez Sferę, ponieważ z reguły definiujemy style globalnie 

<Style TargetType="TextBox">
  ...
</Style>

co w połączeniu z tym, że wczytujemy style później niż Sfera, wpf używa tych późniejszych. Powoduje to, że jeśli TextBoxy w płatnościach nie definiują stylów dla konkretnej kontrolki (<TextBox Style="{StaticResource ...}"/>), to wpf używa tych globalnych.

To samo dzieje się w przypadku pozostałych kontrolek. 

Link to postu
×
×
  • Dodaj nową pozycję...