Reputation: 13
I try to apply datatrigger with binding like that
<Style x:Key="ItemStyle" TargetType="{x:Type TabItem}">
<Setter Property="Width" Value="293"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TabItem">
//...somes trigger...
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=isMaxOnglets}" Value="True">
<Setter Property="Width" Value="100"/>
</DataTrigger>
</Style.Triggers>
</Style>
The <Setter Property="Width" Value="293"/>
is always applied and not the dataTrigger,
I have this
mainModel.isMaxOnglets = true;
and this
bool _isMaxOnglets;
public bool isMaxOnglets
{
get
{
return _isMaxOnglets;
}
set
{
if (_isMaxOnglets != value)
{
_isMaxOnglets = value;
RaisePropertyChanged("isMaxOnglets");
}
}
}
Problem : The datatrigger is never applied
Upvotes: 1
Views: 550
Reputation: 8803
Try using Ancestor Binding
.
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabControl}}, Path=DataContext.isMaxOnglets}" Value="True">
<Setter Property="Width" Value="100"/>
</DataTrigger>
</Style.Triggers>
If mainModel
is DataContext
of TabControl
.
Upvotes: 1