如何根据值的类型动态生成ListBox项(bool / string / int)

时间:2017-05-12 08:45:22

标签: c# wpf xaml listbox

我有一个项目: 原样:我正在生成基于DataTemplate的ListBox,来自ObservableCollection的数据(使用绑定属性) - 这很好。它只包含带有Name的texdtBlock和带有值的TextBox(双向绑定)。

要:我想根据值的类型为值生成动态类型的字段。值可以是字符串 - TextBox,int - TextBox(理想情况是检查用户是否只使用数字),double和bool - CheckBox。

这是我的XAML:

<ListBox x:Name="ListBox1">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="100"/>
                            <ColumnDefinition Width="200"/>
                        </Grid.ColumnDefinitions>
                        <TextBlock Text="{Binding Name}" Margin="2" Grid.Column="0"/>
                        <TextBox Text="{Binding Value, Mode=TwoWay}" Margin="2" Grid.Column="1" IsEnabled="{Binding IsLocked}"/>
                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

这里有C#代码:

    InitializeComponent();
    DataContext = this;
    ListBox1.ItemsSource = valuesList;

虽然valuesList包含具有以下内容的对象: 字符串名称; 字符串值; (必须解析) 字符串类型; (后来的枚举)

请问一下如何生成这种XAML的一些提示?我的意思是可以使用绑定来做到这一点,或者我应该在后面的代码中创建“ListBoxRow”或者用它来填充列表框?我想要一个更清洁的解决方案。这样,我认为我不会使用绑定,可能需要大量的代码才能完成。

提前致谢。

0 个答案:

没有答案