我创建了一个窗口,其中两个垂直方向的堆栈面板(左侧和右侧)位于第三个水平方向的堆栈面板中。 左堆栈面板包含许多控件和一个按钮>隐藏&lt ;,绑定到命令。而且我想动画一个"隐藏"右侧stackpanel并将窗口调整为仅左侧stackpanel的宽度。如何以最简单的方式做到这一点? 我找到WPF stackpanel visibilty animation但是,它不会调整窗口大小。
我的代码是:
public class Setting extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_setting);
}
}
答案 0 :(得分:2)
您可以使用totalslider_second.noUiSlider.destroy();
noUiSlider.create(totalslider_second, newsettings);
上的SizeToContent
属性在内容更改时自动调整窗口大小。
我会推荐Window
值。
Width
但是有一个问题,即您可能需要指定每个<Window ...
SizeToContent="Width"
的宽度,或者在您的窗口上设置StackPanel
以防止MinWidth
调整大小宽度为0。
答案 1 :(得分:1)
通常动画完全在视图中完成,ViewModel不应该与窗口大小有任何关系。因此,为了保留MVVM,您只需要调整后面代码的大小。这通常是通过查找动画资源。
<Storyboard x:Key="AnimateWindow">
<DoubleAnimation Duration="0:0:3.8"
Storyboard.TargetProperty="Width"
From="350"
To="100"
AccelerationRatio=".1">
</DoubleAnimation>
</Storyboard>
因此,在按钮单击时,您还需要处理click事件,以便触发动画。 click事件将查找资源并执行它。它还可以处理您需要的任何其他视图特定事物。
private void Button_Click(object sender, RoutedEventArgs e)
{
var animate= FindResource("AnimateWindow") as Storyboard;
if (hide != null)
{
animate.Begin(this, true);
}
}
这保留了MVVM并且应该完成你想要的。