我有一个Button我需要检测它是否进入 ToolBarOverflowPanel。
当前代码:
(逻辑:监控Children.CountAncestorType ToolBarPanel,发送到转换器,如果 value( ToolBarPanel.Children.Count) = FallbackValuethenToolBarPanel可能没有注册为 Ancestor,因为Button现在ToolBarOverflowPanel改为)
public class IsInOverflowPanel : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return value?.ToString().Equals("-1");
}
/*ConvertBack(...) not included here*/
}
和 XAML:
<ControlTemplate.Resources>
<local:IsInOverflowPanel x:Key="MyOverflowDetector"/>
</ControlTemplate.Resources>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding Children.Count, Converter={StaticResource MyOverflowDetector}, RelativeSource={RelativeSource AncestorType=ToolBarPanel}, FallbackValue=-1}" Value="True">
<!--Do Stuff Here-->
</DataTrigger>
</ControlTemplate.Triggers>
这段代码的问题是当按钮进入ToolBarOverflowPanel.
但它一开始是有效的。我的结论是Children.Count没有提供更新通知。有没有办法解决它?
如何强制转换器更新?我需要什么样的绑定才能实现?