首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF滑块和开关控制阵列

WPF滑块和开关控制阵列
EN

Stack Overflow用户
提问于 2016-02-22 17:49:59
回答 1查看 420关注 0票数 0

我有大量的Sliders、Toggle开关和隐藏/可见事件发生在我的窗口中,使用数组处理变量很容易,直到我必须显示它们为止,然后我必须声明大量变量才能在布尔、双和字节之间进行转换。

是否有方法将控件放置到数组中?例如:

代码语言:javascript
复制
for (uint i = 1; i < 65; i++)
    Slider[i].Value = Parametros[i];

这样我的生活就容易多了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-22 18:12:12

这个粗糙的例子有点仓促,因为您的问题的范围相当广泛和不清楚,但是您希望使用WPF的绑定特性和经常有用的ItemsControl

代码语言:javascript
复制
<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)。

代码语言:javascript
复制
public ObservableCollection<SliderData> Sliders { get; set; }

类似于您的for循环来创建控件..。

代码语言:javascript
复制
Sliders = new ObservableCollection<SliderData>();
Sliders.Add(new SliderData() { Name = "Slider 1", Value = 10 });
Sliders.Add(new SliderData() { Name = "Slider 2", Value = 7 });
...

C#支持类

代码语言:javascript
复制
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; }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35560450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档