2011-01-20 1 views
1

Я зарегистрировал SizeChangedHandler на моем ScatterViewItem:Содержание Установка в ScatterViewItem в зависимости от размера

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; 
      } 
     } 

Как вы можете видеть, я хочу, чтобы установить тест как содержание ScatterViewItem, если она мала, и оригинальное содержимое, если оно больше. Но как только я уменьшил его, он всегда остается на тестовом пути. Что я делаю не так?

ответ

2

в инструкции if вы не проверяете, перешли ли вы на «Тест». поэтому, если вы получите два события, которые говорят, что он изменил размер меньше 150x150, content.Tag заканчивается установкой «Test», из которого вы извлекаете, когда вы изменили размер до> 150x150

+1

Я также должен добавить рекомендацию пользовательского интерфейса. вместо того, чтобы заменить содержимое, которое вызовет «поп» в пользовательском интерфейсе, подумайте о том, чтобы всегда иметь «Тест» в пределах SVI, дать ему 0 непрозрачность для начала и плавно анимировать его непрозрачность в/из при пересечении порога размера , не забудьте установить ishittestvisible = false на нем тоже –

+0

Приятная идея, спасибо. – RoflcoptrException

+0

Знаете ли вы, что это самый простой способ сделать это? (http://msdn.microsoft.com/en-us/library/ms752312.aspx#storyboardwalkthrough) – RoflcoptrException

Смежные вопросы