我的窗口中有大量的滑块,切换开关和隐藏/可见事件,使用数组处理变量很容易,直到我必须显示它们,然后我必须声明吨数变量,用于在布尔值,双精度数和字节数之间进行转换。
有没有办法将控件放入数组?让我们说:
for (uint i = 1; i < 65; i++)
Slider[i].Value = Parametros[i];
这会让我的生活变得如此简单。
答案 0 :(得分:1)
由于你的问题的范围相当广泛且不清楚,所以这个粗略的例子有点匆匆抛在一起,但是你想利用WPF的绑定功能和永远有用的ItemsControl
,例如。
<ItemsControl ItemsSource="{Binding Sliders}">
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type SliderData}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Name}" />
<Slider Grid.Column="1" Value="{Binding Value}" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
必须在某处定义滑块集合(“数据上下文”)。如果你想要一些简单的东西,你可以控制你的datacontext(即窗口构造函数中的DataContext = this
),但是有一个单独的viewmodel(WPF的Google MVVM模式示例)将是首选。
public ObservableCollection<SliderData> Sliders { get; set; }
类似于你的for循环来创建控件......
Sliders = new ObservableCollection<SliderData>();
Sliders.Add(new SliderData() { Name = "Slider 1", Value = 10 });
Sliders.Add(new SliderData() { Name = "Slider 2", Value = 7 });
...
C#支持班级
public class SliderData
{
// Note: I'm doing this shorthand. You need INotifyPropertyChanged for bindings probably.
public string Name { get; set; }
public double Value { get; set; }
}