【发布时间】:2014-12-31 18:31:49
【问题描述】:
我有一个在 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 事件中发生的变化。
【问题讨论】:
-
为什么不把所有这些东西都变成一个itemstemplate,用于基于itemscontrol的控件之一,比如itemscontrol、listbox、gridview等等......?听起来比这条路线容易得多。
-
您介意再详细解释一下吗?我的视图设置方式是我有一个 WrapPanel,它在 Loaded 事件中动态填充 PhotoThumbnail 项目。这是在 PivotItem 内。在 Pivot 下,但在同一个 Grid 中,我定义了一个包含 Slider 的 Popup,一旦用户选择了一个项目,我想根据项目选择填充 ListPicker 并允许用户使用滑块来更改设置,即每个 ThumbnailItem 独有
标签: c# xaml windows-phone-8