gpt4 book ai didi

c# - 绑定(bind) DataTemplate 中的 RotateTransform Angle 未生效

转载 作者:太空宇宙 更新时间:2023-11-03 18:42:22 41 4
gpt4 key购买 nike

在我的 WPF UserControl 中我有这个资源,请观察 Xml 示例中的注释。

<UserControl.Resources>
<DataTemplate x:Key="AxisXLabelTemplate">
<ContentPresenter Content="{Binding Path=Content}">
<ContentPresenter.LayoutTransform>
<RotateTransform Angle="{Binding XAxisLabelRotation, UpdateSourceTrigger=PropertyChanged}" /> <!-- This does not work -->
<!-- <RotateTransform Angle="-90" /> This works -->
</ContentPresenter.LayoutTransform>
</ContentPresenter>
</DataTemplate>
</UserControl.Resources>

在代码中我有一个依赖属性定义如下:

class MyChart: INotifyPropertyChanged
{
public static readonly DependencyProperty XAxisLabelRotationProperty =
DependencyProperty.Register("XAxisLabelRotation", typeof(RotateTransform), typeof(BarChart),
new FrameworkPropertyMetadata((RotateTransform)new RotateTransform(-90.0)));

public RotateTransform XAxisLabelRotation
{
get { return (RotateTransform)GetValue(XAxisLabelRotationProperty); }
set { SetValue(XAxisLabelRotationProperty, value); }
}
...
}

AxisXLabelTemplate DataTemplate 分配给更下方的元素,如下所示:

<chart:AxisLabel ElementTemplate="{StaticResource AxisXLabelTemplate}"/>

问题是,当我使用 Angle 的未绑定(bind)值并将其硬编码为 -90 时,它工作得很好,而当我尝试使用 XAxisLabelRotation 的绑定(bind)值时,它却没有。

有人可以帮忙吗?

最佳答案

我重新创建了与您类似的设置,但它对我也不起作用。奇怪的是没有绑定(bind)错误。我也做了相对源绑定(bind),但没有用。

虽然如果我绑定(bind)工具提示

  <ContentPresenter ToolTip="{Binding XAxisLabelRotation, 
RelativeSource={RelativeSource
AncestorType={x:Type ContentControl}},
UpdateSourceTrigger=PropertyChanged}" ..>

向我显示工具提示。所以我改变了旋转变换,

  <RotateTransform Angle="{Binding XAxisLabelRotation, 
RelativeSource={RelativeSource
AncestorType={x:Type ContentControl}},
UpdateSourceTrigger=PropertyChanged}" ..>

但转换仍然无效。仍然没有绑定(bind)错误。

然后我引入了一个虚拟转换器......

public class AngleConverter : IValueConverter
{
public object Convert(...)
{
return value;
}
....
}

<RotateTransform Angle="{Binding XAxisLabelRotation,
RelativeSource={RelativeSource
AncestorType={x:Type ContentControl}},
UpdateSourceTrigger=PropertyChanged,
Converter={StaticResource AngleConverter}}" ..>

它奇迹般地起作用了!!!

莫名其妙的WPF世界???

关于c# - 绑定(bind) DataTemplate 中的 RotateTransform Angle 未生效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7548849/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com