我有大量的Sliders、Toggle开关和隐藏/可见事件发生在我的窗口中,使用数组处理变量很容易,直到我必须显示它们为止,然后我必须声明大量变量才能在布尔、双和字节之间进行转换。
是否有方法将控件放置到数组中?例如:
for (uint i = 1; i < 65; i++)
Slider[i].Value = Parametros[i];这样我的生活就容易多了。
发布于 2016-02-22 18:12:12
这个粗糙的例子有点仓促,因为您的问题的范围相当广泛和不清楚,但是您希望使用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 = this ),但是最好有一个单独的视图模型(Google模式示例,用于WPF)。
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; }
}https://stackoverflow.com/questions/35560450
复制相似问题