2014-11-04 49 views
0

我有一个在XAML中声明的滑块,我希望根据用户的特定选择来填充值。一个页面是动态填充的,称为PhotoThumbnail的几个UserControl项目包含多个属性。一旦确定选择了哪个PhotoThumbnail,我想向用户显示一个滑块以调整某些属性。我已经在XAML中声明了单个滑块,并且我试图反复使用该滑块。根据用户的选择,滑块将填充不同的最小值和最大值,用户选择的最终值将应用于属性的某些设置。为了说明这一点,我有以下如何动态填充滑块并获得值

XAML

<Slider x:Name="sl" Visibility="Collapsed"/> 

XAML.CS

void EditableEllipse_Tap(object sender, System.Windows.Input.GestureEventArgs e) 
    { 
     if (sender != null) 
     { 
      DependencyObject tappedElement = e.OriginalSource as UIElement; 
      // find parent UI element of type PhotoThumbnail 
      PhotoThumbnail i = this.FindParentOfType<PhotoThumbnail>(tappedElement); 
      if (i != null) 
      { 
       BuildControl(i); 
      } 

      p.IsOpen = true; 
      FilterPagePivot.IsHitTestVisible = false; 
     } 
    } 

    private void BuildControl(PhotoThumbnail p) 
    { 
     switch(p.NName) 
     { 
      case "1": 
       sl = new Slider 
       { 
        Minimum = 1, 
        Maximum = 256, 
        Visibility = System.Windows.Visibility.Visible 
       }; 
       break; 
      case "2": 
       sl = new Slider 
       { 
        Minimum = 1, 
        Maximum = 10, 
        Visibility = System.Windows.Visibility.Visible 
       }; 
       break; 
       ... 
     } 
    } 

主要是,在XAML滑块不采取新定义的属性,还可以是不可见的。注意我捕捉滑块的ValueChanged事件发生时的更改。

+0

为什么不只是将所有这些东西放入一个项目控件的项目控件,如itemscontrol,listbox,gridview,其中一个...?听起来比这条路线容易得多。 – 2014-11-04 20:34:13

+0

你介意更详细的解释吗?我的视图设置的方式是我有一个WrapPanel是动态的在Loaded事件中使用PhotoThumbnail项目填充。这是一个PivotItem。在Pivot下,但在同一个Grid中,我定义了一个包含Slider的Popup,并且一旦用户选择了一个项目,我想根据项目选择填充ListPicker,并允许用户使用滑块更改设置每个ThumbnailItem都是独一无二的 – Matthew 2014-11-05 13:35:22

回答

0

张贴的代码创建滑块的新实例 - 你应该使用现有的滑块实例而不是,即:

switch(p.NName) 
    { 
     case "1": 
      sl.Minimum = 1; 
      sl.Maximum = 256; 
      sl.Visibility = System.Windows.Visibility.Visible; 
      break; 

注:我相信你应该把生成的XAML成员(即您可以通过参考它们的x:Name属性如“sl”)为只读。

+0

这很好,但我第一次遇到Slider的问题。正在使用默认值并设置滑块属性从不在代码中执行,并直接跳转到ValueChanged事件。 http://stackoverflow.com/questions/26829593/slider-not-dynamically-created-properly – Matthew 2014-11-09 15:22:23