根据列表填充文本框值

时间:2015-10-28 14:30:37

标签: c# wpf xaml

我需要调用大约50个不同的数据,用于最小值和最大值。我确信有一种比做以下更好的方法:

 public void refreshminmaxvalues(List<minmaxvalues> listminmaxvalues)
    {
        txtMinA_1.Text = minmaxvalueslist[0].minvalue.ToString();
        txtMaxA_1.Text = minmaxvalueslist[0].maxvalue.ToString();
        txtMinB_1.Text = minmaxvalueslist[0].minvalueB.ToString();
        txtMaxB_1.Text = minmaxvalueslist[0].maxvalueB.ToString();
        txtMin_2.Text = minmaxvalueslist[1].minvalue.ToString();
        txtMax_2.Text = minmaxvalueslist[1].maxvalue.ToString();

    }

上面的代码从列表中获取最小值和最大值。 MinAMinB是两个链接在一起的值,因此将与其他值进行不同的调用。过去txtMax_2的所有内容都只有一分钟和一个最大值。

有没有人知道更好,更“有效”的方式来做这个代码,而不是只写出所有50多个值?

如果有帮助,这些是在XAML中编辑的值:

          <!-- Minimum -->
        <TextBox Name="txtMinA_1" Text=""/>
        <TextBox Name="txtMinB_1" Text=""/>
        <TextBox Name="txtMin_2" Text=""/>
        <TextBox Name="txtMin_3" Text=""/>
        <TextBox Name="txtMin_4" Text=""/>

         <!-- Maximum -->
        <TextBox Name="txtMaxA_1" Text=""/>
        <TextBox Name="txtMaxB_1" Text=""/>
        <TextBox Name="txtMax_2" Text=""/>
        <TextBox Name="txtMax_3" Text=""/>
        <TextBox Name="txtMaxH_4" Text=""/>

2 个答案:

答案 0 :(得分:1)

您应该能够使用ItemsControl并绑定到:

<ItemsControl x:Name="Mins">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <TextBox Text="{Binding minvalue}"></TextBox>
            <TextBox Text="{Binding minvalueB}"></TextBox>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>
<ItemsControl x:Name="Maxes">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <TextBox Text="{Binding maxvalue}"></TextBox>
            <TextBox Text="{Binding maxvalueB}"></TextBox>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

你可以像这样绑定一个类型:

Mins.ItemsSource = listminmaxvalues;
Maxes.ItemsSource = listminmaxvalues;

更多信息:WPF Repeater (like) control for collection source?

答案 1 :(得分:1)

如果您确切知道返回了多少数据,那么您应该使用模型和数据绑定。

例如:

YourXaml.xaml

编辑:在DLeh的答案中使用ItemsTemplateSelector,但我的其他内容仍然有意义并且是相关的。

 <TextBox Name="txtMinA_1" Text="{Binding txtMinA_1.minvalue"/>
 <TextBox Name="txtMinA_1" Text="{Binding txtMinB_1.maxvalue"/>
 ect...

YourXaml.xaml.cs

public class YourXaml{
     public YourXaml(){
        this.DataContext = new YourViewModel();
     }
}

YourViewModel.cs

public YourViewModel{
    private minmaxvalues _txtMinA_1;
    private minmaxvalues _txtMinB_1;

    public minmaxvalues txtMinA_1
    { 
       get{ return _txtMinA_1; }
       set{ _txtMinA_1 = value; }
    }
    public minmaxvalues txtMinB_1
    { 
       get{ return _txtMinB_1; }
       set{ _txtMinB_1= value; }
    }

}

通过使用此结构,您可以将视图(YourXaml.xaml)与模型和视图模型中的数据分离。它是WPF中一种更有效和行业认可的工作方式。

To learn more about MVVM go here.您将要了解DataBinding的内容。