我有一个简单的winphone7应用程序,但我认为这适用于任何silverlight.
基本上我有一个椭圆,我想用翻译X和Y属性移动它.这是我的尝试:
<Ellipse Fill="#FFF4F4F5" Margin="0,0,-3,-3" Stroke="Black" RenderTransformOrigin="0.5,0.5" >
<Ellipse.RenderTransform>
<CompositeTransform TranslateY="{Binding Y}" TranslateX="{Binding X}"/>
</Ellipse.RenderTransform>
</Ellipse>
Run Code Online (Sandbox Code Playgroud)
我很确定Binding设置正确; 问题是,当我运行应用程序时,它给了我这个错误:
2260发生错误.[线:4位置:33]
这是一个XAML错误.当我注释掉composittransform行时,错误消失了.
任何人都能指出我正确的方向吗?如果你需要更多代码让我知道,我会发布更多.
谢谢
我将尽量简化这一过程。
我想做这个:
<Storyboard x:Name="MoveToLocation">
<DoubleAnimation Duration="0:0:0.5" To="{Binding X}" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="grid" d:IsOptimized="True"/>
</Storyboard>
Run Code Online (Sandbox Code Playgroud)
您可能已经注意到,“到”属性上的绑定无效。似乎只接受静态值。
MVVM如何制作这种动画?我不能只放入静态数据,因为它会发生变化。
谢谢。
我有一个带有列表框的 DockPanel。停靠面板成功地填充了整个窗口的宽度。现在,我希望列表框填充整个 DockPanel 的宽度。
我尝试了很多东西......包括在它周围环绕一个网格并将列设置为 * 的宽度,将列表框的水平对齐设置为拉伸,以及许多其他的。我似乎无法让这个愚蠢的列表框来填充宽度。
这个列表框确实有一个 ItemTemplate,但它里面的所有东西都有一个带有自动宽度的拉伸水平对齐方式。每当您将 ItemTemplate 的宽度设置为静态时,列表框都会适当地调整大小。我只是无法让它填满父母。
谢谢。
编辑:
谢谢你们让我意识到这是我的错……原来这是标签风格的一个傻瓜。
我现在将尝试删除这个问题。
在开始之前,我在Custom Usercontrol中有这个代码:
private DependencyProperty _rotation = DependencyProperty.Register("Rotation", typeof(double), typeof(MyControl),
new PropertyMetadata(new PropertyChangedCallback(RotationPropertyChanged)));
public double Rotation
{
get { return (double)GetValue(_rotation); }
set { SetValue(_rotation, value); }
}
public static void RotationPropertyChanged(DependencyObject obj, System.Windows.DependencyPropertyChangedEventArgs e)
{
//How can I start Animation, as I'm in a Static method?
}
Run Code Online (Sandbox Code Playgroud)
属性设置正确,我的RotationPropertyChanged函数也被正确调用.如您所见,我在该方法中的评论是我的问题.由于这种处理器需要是静态的(VS这么告诉我的),我如何访问非静态的东西,比如故事板,所以我可以开始动画?
详细说明数据绑定:
我的视图模型正在更新一个属性(位于同一视图模型),这是数据绑定通过XAML中这种依赖性属性.我希望我不必使用这个回调,但没有它就不会改变属性.
谢谢