Это просто образец кодаКак отключить DataTrigger на основе ситуации в WPF XAML?
В примере кода, я имею 3 кнопки. Каждая кнопка «Видимость» сворачивается по умолчанию, она будет видимой во время мышки на соответствующей сетке или границе.
Названия 3 кнопки являются
- SupremeButton
- PowerButton
- StarButton
PowerButton имеет дополнительный триггер, когда кнопка получает Видимый то превращает Background
цвет в BlueViolet. Но по умолчанию Background
Цвет BurlyWood
Кроме того, для настройки видимости в PowerButton есть еще два DataTriggers.
- Если SupremeButton получает видимость Visible то PowerButton превращает видимость Visible
Если StarButton получает видимость Visible то PowerButton превращает видимость Visible
Здесь мое требование мне нужно отключить в DataTrigger Цвет фона для вышеупомянутых двух данных DataTrigger получает эффект. Результат должен быть по умолчанию Цвет BurlyWood.
Примечание: Не добавляйте условие в сказанное DataTrigger, чтобы установить цвет фона к BurlyWood. Поделитесь своей идеей, как сделать байк DataTrigger.
My Sample WPF XAML Исходный код
<Grid>
<Border x:Name="m_Border" Width="100" Height="30" HorizontalAlignment="Center" VerticalAlignment="Top" Background="#FFF2FFC6" Margin="0,20,0,0">
<Button x:Name="SupremeButton" Content="iApp" HorizontalAlignment="Center" VerticalAlignment="Center" Width="75" >
<Button.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=m_Border, Path=IsMouseOver}" Value="false">
<Setter Property="Button.Visibility" Value="Collapsed"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</Border>
<Grid x:Name="grid" Width="100" Height="30" HorizontalAlignment="Center" VerticalAlignment="Top" Background="#FFF2FFC6" Margin="0,60,0,0">
<Button x:Name="PowerButton" Content="iApp" HorizontalAlignment="Center" VerticalAlignment="Center" Background="BurlyWood" Width="75" >
<Button.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=grid, Path=IsMouseOver}" Value="false">
<Setter Property="Button.Visibility" Value="Collapsed"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=PowerButton, Path=Visibility}" Value="Visible">
<Setter Property="Button.Background" Value="BlueViolet"></Setter>
</DataTrigger>
<!-- Visibilty is set by Outer Button -->
<DataTrigger Binding="{Binding ElementName=SupremeButton, Path=Visibility}" Value="Visible">
<Setter Property="Button.Visibility" Value="Visible"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=StarButton, Path=Visibility}" Value="Visible">
<Setter Property="Button.Visibility" Value="Visible"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</Grid>
<Border x:Name="n_Border" Width="100" Height="30" HorizontalAlignment="Center" VerticalAlignment="Top" Background="#FFF2FFC6" Margin="0,100,0,0">
<Button x:Name="StarButton" Content="iApp" HorizontalAlignment="Center" VerticalAlignment="Center" Width="75" >
<Button.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=n_Border, Path=IsMouseOver}" Value="false">
<Setter Property="Button.Visibility" Value="Collapsed"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</Border>
</Grid>
Я не понимаю, чего вы пытаетесь достичь. Когда я тестирую ваш XAML, PowerButton всегда * BurlyWood, независимо от того, какая кнопка мыши закончилась. Вы хотите, чтобы PowerButton был BlueViolet только тогда, когда мышь находится над одной из двух других кнопок? И BurlyWood, когда мышь над PowerButton сама? –
По умолчанию он должен быть «BurlyWood» во время мышки Hover с соответствующей сеткой, он должен перейти к «BlueViolet». Остальная часть кнопки Hover должна быть «BurlyWood». Пожалуйста, обратитесь к разделу «Примечание». –