[C#]WPF 滑块和开关控制阵列

标签: Visual-Studio WPF C#
发布时间: 2017/2/24 2:03:44
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有大量的滑块,拨动开关,隐藏/可见所发生的事情在我的窗前,处理变量易于使用数组直到点在那里,我是要告诉他们,然后我不得不声明变量,使布尔值、 双打和字节之间转换吨。

有没有办法将控件放置到阵列?,比方说︰

for (uint i = 1; i < 65; i++)
    Slider[i].Value = Parametros[i];

这将使我的生活变得如此简单。

解决方法 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 (谷歌 MVVM 模式例子为 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; }
}
赞助商