我在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 :(得分: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;)视为只读。