JuseNNN
JuseNNN

Reputation: 13

XAML DataTrigger binding

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

Answers (1)

Kylo Ren
Kylo Ren

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

Related Questions