wszystko jest w tytule:co robi x: Key = "{x: Type TextBox}"?
czytałem więcej niż raz, że ustawienie stylu tak:
<Style TargetType="TextBox">...</Style>
była grubsza odpowiada:
<Style x:Key="{x:Type TextBox}" TargetType="TextBox">...</Style>
(ostatni raz in a comment on another question)
oba powinny stosować styl do wszystkich pól tekstowych w aplikacji (jeśli oczywiście są one umieszczone w zasobach aplikacji)
ale próbowałem zarówno w moich aplikacjach, jak i tylko w drugim z kluczem zdefiniowanym przez x: Key.
to szwy całkiem logiczne dla mnie, ponieważ pierwszy nie wie, gdzie zastosować bez żadnego x: Zestaw właściwości klucza, ale jaki jest sens pierwszej składni?
Edit: przykład kodu w mojej aplikacji, która działa prawidłowo:
<Style x:Key="{x:Type ComboBoxItem}" TargetType="{x:Type ComboBoxItem}">
<Setter Property="HorizontalContentAlignment" Value="Left"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
</Style>
i kod, który nie:
<Style TargetType="{x:Type ComboBoxItem}">
<Setter Property="HorizontalContentAlignment" Value="Left"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
</Style>
Napisałem to, aby pozbyć się problemów wiążących ty get with comboBoxItems podczas manipulowania istniejącym itemSource ComboBox. Pierwszy kod działa dobrze, ale drugi nie.
widać to łatwo przez ustawienie horizontalContentAlignment do prawej
Edit 2: Kod ten jest po prostu umieścić w słowniku zasobów w moim App.xaml. I zastąpienie TargetType = "{x: Type ComboBoxItem}" z TargetType = "ComboBoxItem" czyni żadnej różnicy w ogóle
Edit 3: Właśnie uświadomiłem sobie, że mogę zapomnieć do precyzyjnego czegoś ważnego (przepraszam): chociaż style są zdefiniowane w xaml, faktycznie dodałem kontrolki do układu w moim kodzie, ponieważ są dodawane dynamicznie. Może być tam, gdzie leży problem ...
Czy możesz rozwinąć, co masz na myśli: * od czasu kodowania być tył WPF musi być niedoskonały. * Czy uważasz, że ten przypadek jest błędem w WPF? Myślę, że zanim dojdziemy do tego wniosku, potrzebujemy dużo więcej kodu. –
"Czy uważasz, że ta sprawa jest błędem w WPF?" Tak, właśnie o to mi chodzi. Nie sądzę, że potrzebujesz więcej kodu, aby dojść do takiego wniosku, ponieważ mamy opis tego, co * powinno * się wydarzyć, i raport, że tak naprawdę nie zawsze tak jest. Podany kod wydaje się dość prosty i jeśli wszystko inne pozostanie całkowicie takie samo, można wywnioskować, że błąd musi być z podstawowym kodem WPF. –
Co to oznacza, można połączyć właściwość TargetType z właściwością x: Type. Wtedy twój styl ComboBoxItem będzie miał zastosowanie tylko wtedy, gdy jawnie zostanie umieszczony w XAML. –