wpf - DataTrigger setter 只调用一次
问题描述
我有以下风格。我的问题是,即使多重绑定总是正确的,我只在加载 Window 时观察 setter 一次。每当我更改窗口高度时,都会调用这个 MyMultiValueConverter,我可以在日志中看到它,但看不到“<Setter>”。
<Style x:Key="SeperatorRectangleStyle" TargetType="Rectangle">
<Setter Property="Width" Value="2"/>
<Setter Property="Height" Value="50"/>
<Setter Property="MinHeight" Value="49"/>
<Style.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource myTheMultiValueConverter}">
<Binding RelativeSource="{RelativeSource AncestorType={x:Type Window}, Mode=FindAncestor}" Path="ActualHeight"/>
<Binding RelativeSource="{RelativeSource AncestorType={x:Type Window}, Mode=FindAncestor}" Path="Name"/>
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Height" Value="{Binding Converter={StaticResource mySeperatorHeightConverter}, ConverterParameter=DataTrigger}"/>
</DataTrigger>
</Style.Triggers>
</Style>
MyMultiValueConverter 是:
class TheMultiValueConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
foreach (var i in values)
{
Console.WriteLine("TheMultiValueConverter values" + i);
}
Console.WriteLine("");
return true
}
}
MySeperatorHeightConverter 是
class SeperatorHeightConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
Console.WriteLine("!-!- SeperatorHeightConverter: " + parameter);
return 100;
}
}
解决方案
您的代码中的问题是您将某些东西绑定到不改变的高度。这就是第二个转换器没有被触发的原因。
请参阅此代码:
<Setter Property="Height" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}, Path=ActualHeight, Converter={StaticResource mySeperatorHeightConverter}, ConverterParameter=DataTrigger}"/>
这个小的变化使得SeperatorHeightConverter
每次窗口高度变化时都会触发。
推荐阅读
- c# - 我试图从 SQL Server 中的列表 ID 标识中获取组合框数据,但出现检索错误
- algorithm - Theta(1) 操作是什么意思?
- python - distplot 中每个 bin 的计数
- r - 使用 ugarchroll 拟合 gjrGARCH 模型:出现错误 + 警告
- reactjs - 从 React 应用程序向 pm2 启动的 Express 服务器发出请求时出现“原因:CORS 请求未成功”
- python - 从目录中读取多个 CSV 文件以检查列数
- events - 如何检查或检测窗口是否在 SDL 中最小化或不活动?
- python - 我想使用for循环在python中的字典中获取每个主题的总和
- android - 自定义视图从Android中的自定义主题属性获取自定义属性值
- javascript - Ramda - 然后,否则,andFinally?