根据大小设置ScatterViewItem的内容

时间:2011-01-20 14:05:05

标签: c# .net wpf pixelsense

我在ScatterViewItem上注册了SizeChangedHandler:

private void MethodBoxScatterSizeChanged(object sender, SizeChangedEventArgs args)
        {
            if (args.NewSize.Width < 150 && args.NewSize.Height < 150)
            {
                ScatterViewItem svi = sender as ScatterViewItem;

                TextBox txt = new TextBox();
                txt.Text = "Test";
                txt.Tag = svi.Content;
                svi.Content = txt;
                args.Handled = true;
            }
            else if (args.PreviousSize.Width < 150 && args.PreviousSize.Height < 150 && args.NewSize.Height > 150 && args.NewSize.Width > 150)
            {
                ScatterViewItem svi = sender as ScatterViewItem;
                FrameworkElement old = (svi.Content as FrameworkElement).Tag as FrameworkElement;
                svi.Content = old;
                args.Handled = true;
            }
        }

正如您所看到的,我想将Test设置为ScatterViewItem的内容(如果它很小),如果原始内容再次变大则设置为原始内容。但是一旦我减少它,它总是保持测试方式。我做错了什么?

1 个答案:

答案 0 :(得分:2)

在if语句中,您没有检查是否已经切换到“Test”。因此,如果您收到两个事件,说它已调整为小于150x150,则content.Tag最终设置为“Test”,这是您在调整大小时将其拉回到&gt; 150×150