Sto cercando di creare un trigger di dati stile semplice che tira è vincolante il valore da una proprietà ViewModel, come potete vedere qui sotto:DataTrigger legame ViewModel proprietà
<StackPanel Name="stackTextPanel" Orientation="Horizontal" Margin="0,8,0,0">
<StackPanel.Style>
<Style TargetType="{x:Type StackPanel}">
<Style.Triggers>
<DataTrigger Binding="{Binding QuickDrawBarPinned}" Value="False">
<Setter Property="Margin" Value="0,8,0,0" />
</DataTrigger>
<DataTrigger Binding="{Binding QuickDrawBarPinned}" Value="True">
<Setter Property="Margin" Value="0,48,0,0" />
</DataTrigger>
</Style.Triggers>
</Style>
</StackPanel.Style>
Ho anche provato la variante
ma questo non funziona ancora quando premo il pulsante che cambia la proprietà QuickDrawBarPinned cosa sto facendo male?
Ho implementato la proprietà come così:
private bool _quickDrawBarPinned = false;
/// <summary>
/// Indicates if the Quick Draw Bar is pinned (stuck) or unpinned (retractable)
/// </summary>
public bool QuickDrawBarPinned
{
get { return _quickDrawBarPinned; }
set
{
_quickDrawBarPinned = value;
OnPropertyChanged("QuickDrawBarPinned");
}
}
questo è il metodo che implementa il controllo delle modifiche
public virtual void OnPropertyChanged(string propertyInfo)
{
App.Current.Dispatcher.BeginInvoke((Action)(() =>
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyInfo));
}
}
));
}
Bingo, grazie! Penso che sia stata una combinazione di entrambe le risposte che mi ha aiutato, ho dimenticato di includere prima la notifica di modifica, in quanto avevo già provato a rimuovere la proprietà del margine locale e non ha funzionato. Quindi, implementando entrambe le risposte, ho risolto il problema, grazie! – MikeDub