tutto è nel titolo:cosa fa x: Key = "{x: Type TextBox}" fare?
ho letto più di una volta che l'impostazione di uno stile come questo:
<Style TargetType="TextBox">...</Style>
era più o meno equivalente a:
<Style x:Key="{x:Type TextBox}" TargetType="TextBox">...</Style>
(l'ultima volta in a comment on another question)
entrambi dovrebbero applicare lo stile a tutti i box di testo nell'app (se sono inseriti nelle risorse dell'app ovviamente)
ma ho provato entrambi nelle mie app e solo il secondo con i lavori definiti da x: Key.
mi sembra abbastanza logico, dal momento che il primo non sa dove essere applicato senza alcuna x: set di proprietà chiave, ma qual è il punto della prima sintassi?
Edit: esempio di codice nel mio app che funziona bene:
<Style x:Key="{x:Type ComboBoxItem}" TargetType="{x:Type ComboBoxItem}">
<Setter Property="HorizontalContentAlignment" Value="Left"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
</Style>
e il codice che non fa:
<Style TargetType="{x:Type ComboBoxItem}">
<Setter Property="HorizontalContentAlignment" Value="Left"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
</Style>
Ho scritto questo per sbarazzarsi dei problemi di rilegatura ottenere con comboBoxItems quando si manipola una fonte di elementi di un ComboBox esistente. E il primo codice funziona bene, ma il secondo no.
si può vedere questo facilmente impostando il HorizontalContentAlignment a destra
Edit 2: Questo codice viene semplicemente messo in un dizionario risorse nel mio App.xaml. E sostituendo TargetType = "{x: Tipo ComboBoxItem}" con TargetType = "ComboBoxItem" non fa differenza di sorta
Edit 3: Ho appena realizzato che potrei aver dimenticato di preciso qualcosa di importante (dispiace): sebbene il gli stili sono definiti in xaml, in realtà aggiungo i controlli al layout nel mio codice mentre vengono aggiunti dinamicamente. Potrebbe essere dove si trova il problema ...
Puoi approfondire cosa si intende qui:.! * in quanto la codifica essere hind WPF è destinato ad essere imperfetto. * Pensi che questo caso sia un bug in WPF? Penso che abbiamo bisogno di vedere molto più codice prima di poter arrivare a quella conclusione. –
"Pensi che questo caso sia un bug in WPF?" Sì, è esattamente ciò che intendo. Non penso che tu abbia bisogno di più codice per giungere a questa conclusione perché abbiamo una descrizione di cosa * dovrebbe * accadere e un rapporto che in realtà non è sempre il caso. Il codice fornito sembra abbastanza semplice e se tutto il resto viene lasciato completamente lo stesso si può concludere che l'errore deve essere con un codice WPF di base. –
Quindi, ciò che si sta dicendo è che è possibile combinare la proprietà TargetType con una proprietà x: Type. Quindi lo stile ComboBoxItem verrà applicato solo quando si è esplicitamente seduti in XAML. –