如何动态填充滑块并获得价值

时间:2014-11-04 18:31:14

标签: c# xaml windows-phone-8

我在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事件中的更改。

1 个答案:

答案 0 :(得分:0)

发布的代码创建了Slider的新实例 - 您应该使用现有的Slider实例,即:

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

注意:我相信您应该将生成的XAML成员(您通过x:Name属性引用的成员,如&#34; sl&#34;)视为只读。