C# 如何动态填充滑块并获取值

C# 如何动态填充滑块并获取值,c#,xaml,windows-phone-8,C#,Xaml,Windows Phone 8,我在XAML中声明了一个滑块,希望根据用户的特定选择使用值填充该滑块。页面由几个名为PhotoThumbnail的UserControl项动态填充,这些项包含多个属性。一旦确定选择了哪个照片缩略图,我想向用户显示一个滑块来调整一些属性。我已经在XAML中声明了一个滑块,我正在尝试重复使用同一个滑块。根据用户的选择,滑块将填充不同的最小值和最大值,用户选择的最终值将应用于属性的某些设置。为了说明这一点,我有以下几点 XAML XAML.CS void EditableEllipse_Tap(obj

我在XAML中声明了一个滑块,希望根据用户的特定选择使用值填充该滑块。页面由几个名为PhotoThumbnail的UserControl项动态填充,这些项包含多个属性。一旦确定选择了哪个照片缩略图,我想向用户显示一个滑块来调整一些属性。我已经在XAML中声明了一个滑块,我正在尝试重复使用同一个滑块。根据用户的选择,滑块将填充不同的最小值和最大值,用户选择的最终值将应用于属性的某些设置。为了说明这一点,我有以下几点

XAML

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事件中发生的更改。

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

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

注意:我认为您应该将生成的XAML成员(您通过其x:Name属性(如sl)引用的成员)视为只读的

为什么不把所有这些东西都做成一个itemstemplate,用于一个基于itemscontrol的控件,比如itemscontrol、listbox、gridview等等。。。?听起来比这条路线容易多了。你介意再详细解释一下吗?我的视图的设置方式是,我有一个WrapPanel,该WrapPanel在加载的事件中动态填充照片缩略图项。这在数据透视项中。在Pivot下,但在同一个网格中,我定义了一个包含滑块的弹出窗口,一旦用户选择了一个项目,我想根据项目选择填充ListPicker,并允许用户使用滑块更改每个ThumbnailItem的唯一设置,这非常有效,但是我在第一次填充滑块时遇到了问题。默认值正在使用,设置滑块属性不会在代码中执行,并直接跳到ValueChanged事件。
 switch(p.NName)
    {
        case "1":
            sl.Minimum = 1;
            sl.Maximum = 256;
            sl.Visibility = System.Windows.Visibility.Visible;
            break;