【发布时间】:2018-04-02 21:21:41
【问题描述】:
我正在使用 DataTemplate 将矩形添加到 ItemsControl。矩形在指定为 ItemsControl 的 ItemsSource 的 ObservableCollection 中指定。矩形模型指定平移、旋转和缩放。
我不明白的是:为什么当 Transform 或 TransformGroup 不是 FrameworkElements 并因此不支持继承 DataContext 时,我可以将某些东西绑定到转换?
XAML 编译器甚至给了我错误:
(System.Windows.Data 错误:2:找不到管理 FrameworkElement 或 FrameworkContentElement 为目标 元素。绑定表达式:路径=比例;数据项=空;目标元素是 'ScaleTransform' (HashCode=35912612);目标属性是“ScaleX” (输入“双”))
但是项目的显示工作正常。这很奇怪,不是吗。
<ItemsControl.ItemTemplate>
<DataTemplate>
<Rectangle Width="100" Height="100" Fill="Red">
<Rectangle.RenderTransform>
<TransformGroup>
<ScaleTransform
ScaleX="{Binding Scale}"
ScaleY="{Binding Scale}" />
<RotateTransform
Angle="{Binding Angle}" />
<TranslateTransform
X="{Binding X}"
Y="{Binding Y}" />
</TransformGroup>
</Rectangle.RenderTransform>
</Rectangle>
</DataTemplate>
</ItemsControl.ItemTemplate>
型号:
public class RectangleModel
{
public double X {get; private set;}
public double Y {get; private set;}
public double Scale {get; private set;}
public double Angle {get; private set;}
public RectangleModel(double x, double y, double scale, double angle)
{
X = x;
Y = y;
Scale = scale;
Angle = angle;
}
}
【问题讨论】:
标签: c# wpf data-binding