J'essaye de configurer une sous-classe de TextBox qui changera son style basé sur quelques choses différentes, et je me heurte à deux problèmes. Le premier déclencheur, celui de VisualBrush, se déclenche correctement mais n'écrit pas le texte dans la chaîne myName. J'ai essayé de faire de myName une propriété mais pour une raison quelconque, la méthode set renvoie une exception StackOverFlowException.Le déclencheur WPF/les liaisons ne fonctionnent pas
Le second problème concerne le DataTrigger, qui n'est pas déclenché même si isRequired est défini sur false.
Tout cela est dans un contrôle personnalisé qui hérite TextBox.
Voici mon XAML:
<TextBox.Style>
<Style TargetType="TextBox">
<Style.Triggers>
<Trigger Property="Text" Value="">
<Setter Property="Background">
<Setter.Value>
<VisualBrush Stretch="None">
<VisualBrush.Visual>
<TextBlock Foreground="Gray" FontSize="24">
<TextBlock.Text>
<Binding Path="myName" RelativeSource="{RelativeSource Self}" />
</TextBlock.Text>
</TextBlock>
</VisualBrush.Visual>
</VisualBrush>
</Setter.Value>
</Setter>
</Trigger>
<DataTrigger Binding="{Binding Path=isRequired, Source={RelativeSource Self}}" Value="False">
<Setter Property="Text" Value="100" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
CS:
public partial class SuperTB : TextBox
{
public String myName
{
get { return myName; }
set {}
}
DependencyProperty isRequiredProperty = DependencyProperty.Register("isRequired", typeof(Boolean), typeof(SuperTB));
public Boolean isRequired
{
get { return (Boolean)GetValue(isRequiredProperty); }
set { SetValue(isRequiredProperty, value); }
}
public SuperTB()
{
InitializeComponent();
myName = "Unicorns!";
}
}
Ceci est le code qui StackOverflows il. également défaut au travail, mais pas une exception est:
public string myName = "Rainbows!";
Veuillez également ajouter le code C#. –
Veuillez utiliser uniquement la balise Visual Studio si votre question a réellement quelque chose à voir avec elle. (Le fait que vous ayez écrit votre code en lui-même n'entraîne pas que ** –