Ho trovato numerosi thread simili qui, ma nessuno che sembra risolvere il mio problema specifico.Associazione di un trigger di stile WPF a una proprietà di dipendenza personalizzata
Devo evidenziare lo sfondo di una casella di testo in determinate condizioni. Ho creato una proprietà di evidenziazione e ho provato a utilizzare un trigger in uno stile per impostarlo, ma in realtà non evidenzia mai il testo.
Qui è il mio stile, semplificato:
<Style x:Key="TextBoxStyle" BasedOn="{StaticResource CommonStyles}">
<Style.Triggers>
<Trigger Property="Elements:DataElement.Highlight" Value="True">
<Setter Property="Control.Background"
Value="{DynamicResource EntryBoxHighlightBackground}"/>
</Trigger>
</Style.Triggers>
</Style>
elementi è definito come:
xmlns:Elements="clr-namespace:MDTCommon.Controls.Forms.Elements">
allora ho la sezione in cui viene applicato lo stile:
<!-- Applies above style to all TextBoxes -->
<Style TargetType="TextBox" BasedOn="{StaticResource TextBoxContentHolder}" >
<Setter Property="Validation.ErrorTemplate" Value="{x:Null}" />
<!-- Overrides the default Error Style -->
</Style>
Nel codice dietro della classe DataElement è la seguente:
public static readonly DependencyProperty HighlightProperty =
DependencyProperty.Register("Highlight", typeof(bool), typeof(DataElement));
public bool Highlight
{
get { return (bool)base.GetValue(HighlightProperty); }
set { base.SetValue(HighlightProperty, value); }
}
Un DataElement deriva in ultima analisi da UserControl e contiene un riferimento all'oggetto TextBox nonché a tutti gli oggetti.
Nella classe CustomForm che contiene tutti gli oggetti DataElement ho il seguente per impostare il colore.
Resources["EntryBoxHighlightBackground"] = Brushes.Yellow;
Così, il primo problema è che l'impostazione della proprietà Highlight per il DataElement non causa lo sfondo casella di testo per disegnare in giallo.
L'altro problema è che mi rendo conto che sto applicando questo stile a tutte le caselle di testo e che potrei avere caselle di testo in altre aree che non sono effettivamente contenute in un DataElement, il che potrebbe causare un problema di binding.
tenta di aggiungere un setter 'background' al vostro stile –
ho un setter per questo. – WPFNewbie
Ho tralasciato molto stile per mantenerlo semplice e concentrarmi sulle aree in cui penso che il problema potrebbe essere. – WPFNewbie