我有一个ListBox.ItemTemplate定义为
<DataTemplate>
<Border
x:Name="dotBorder"
...
Cursor="Hand">
<Grid
x:Name="dot"
Height="58"
HorizontalAlignment="Stretch"
Tag="{Binding Id}">
...
<Border Grid.Column="3" PreviewMouseDown="Arrow_PreviewMouseLeftButtonDown">
<TextBlock
x:Name="arrow"
...>
<TextBlock.RenderTransform>
<RotateTransform Angle="{Binding IsExpanded, Converter={StaticResource boolToValue}, ConverterParameter=90}" />
</TextBlock.RenderTransform>
</TextBlock>
</Border>
</Grid>
</Border>
</DataTemplate>我的问题是RotateTransform似乎不知道IsExpanded什么时候改变,所以转换器不会被触发。我尝试过使用RelativeSource、ElementName等声明绑定,但都无济于事。未显示任何绑定错误。有什么想法吗?
稍后编辑:
发现了一些奇怪的行为:如果我在运行时对TextBlock xaml做了一个小的修改(例如删除VerticalAlignment),那么一切都会按预期开始工作--绑定会自动“修复”自己。这就像RotateTransform的DataContext在那之前不会被加载。
发布于 2021-10-29 12:50:34
RendeTransform是一个封装孤岛,所以我认为您需要以不同的方式进行绑定-类似于:
<RotateTransform Angle="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Grid}, Path=DataContext.IsExpanded, Converter={StaticResource boolToValue}, ConverterParameter=90}" />https://stackoverflow.com/questions/69759283
复制相似问题