我害怕XAML盲目.我正在开发一个MS Surface应用程序,我在ScatterViewItem(最终用户可以调整大小的容器)中有一个椭圆.我想保持椭圆为圆(宽度==高度)并保持尽可能大(对于椭圆的宽度/高度属性,应采用SVI宽度/高度的最小值).
优选仅使用XAML解决方案(使用属性触发器或类似方法).
一如既往地非常感谢您的帮助.
更新:我在另一台安装得更干净的机器上尝试了这个.我无法在那台机器上重现这一点.如果我发现有什么令人讨厌的(VSStudio)组件导致这种情况,我会告诉你.
我从后面的代码创建了一些UIElements,并期待垃圾收集来清理东西.但是,在我预期的时候,对象不会被自由编辑.我期待他们在RemoveAt(0)被释放,但他们只在程序结束时被释放.
从Canvas的Children集合中删除时,如何释放对象?
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300"
MouseDown="Window_MouseDown">
<Grid>
<Canvas x:Name="main" />
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
背后的代码是:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Window_MouseDown(object sender, MouseButtonEventArgs e)
{
GC.Collect(); // This should pick up the control removed at a previous MouseDown
GC.WaitForPendingFinalizers(); // Doesn't help either
if (main.Children.Count == 0)
main.Children.Add(new MyControl() { Background = Brushes.Yellow, Width = 100, Height = 50 });
else
main.Children.RemoveAt(0);
}
}
public class MyControl …Run Code Online (Sandbox Code Playgroud) 我想要一个图像列表的实例,我希望在我的应用程序中的所有表单(工具栏的图标)上共享.我已经看过之前提出的问题,人们提出了一个用户控件(这是不好的,因为它会创建图像列表的多个实例,从而创建不必要的对象和开销).
设计时间支持会很好,但不是很重要.
在Delphi中,这非常简单:创建一个DataForm,共享图像,然后就可以了.
那是否有C#/.Net/Winforms变体?