【问题标题】:How to assign List<> Object values to textBox (s)如何将 List<> 对象值分配给 textBox (s)
【发布时间】:2016-07-30 07:34:28
【问题描述】:

我想将 findFamily 对象的值分配给不同的 TextBox,我尝试了以下代码,但它不起作用,请您建议我一个更好的方法。提前致谢。

 private void Search_Click(object sender, RoutedEventArgs e)
    {
        if (SearchFamilyMemberId.Text.Trim() != "")
        {
            SITDataDataContext con = new SITDataDataContext();
            List<Family> findFamily = (from s in con.Families where s.FamilyMemberId.Equals(SearchFamilyMemberId.Text.Trim()) select s).ToList();
            if (findFamily.Any())
            {
                FamilyMemberId.Text = findFamily[0];
                FirstName.Text = findFamily[1];
                LastName.Text = findFamily[2];
                if (findFamily[3]=="Male")
                {
                    Male.IsChecked = true;
                }
                else
                {
                    Female.IsChecked = true;
                }
                Phone.Text = findFamily[4];
                Address.Text = findFamily[5];

            }
            else
            {
                MessageBox.Show("Family Id not found!");
            }
        }
        else
        {
            MessageBox.Show("Invalid Id!");
        }
    }

这是我的 xamal 代码

 <Grid Margin="10">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <Label Grid.Row="1" Grid.Column="0" Content="Family Member ID:"/>
        <Label Grid.Row="2" Grid.Column="0" Content="First Name:"/>
        <Label Grid.Row="3" Grid.Column="0" Content="Last Name:"/>
        <Label Grid.Row="4" Grid.Column="0" Content="Gender:"/>
        <Label Grid.Row="5" Grid.Column="0" Content="Phone:"/>
        <Label Grid.Row="6" Grid.Column="0" Content="Address:"/>

        <CheckBox Name="ColonyResident" Content="Colony Resident" Grid.Row="0" Grid.Column="0" Margin="5" Checked="ColonyResident_Checked" Unchecked="ColonyResident_Unchecked"/>
        <TextBox Name="SearchFamilyMemberId" IsEnabled="False" SelectionChanged="FamilyMemberId_SelectionChanged" Grid.Row="0" Grid.Column="1" Margin="3"/>
        <TextBox Name="FamilyMemberId"  IsEnabled="False" Grid.Row="1" Grid.Column="1" Margin="3" Grid.ColumnSpan="2"/>
        <TextBox Name="FirstName" Grid.Row="2" Grid.Column="1" Margin="3" Grid.ColumnSpan="2"/>
        <TextBox Name="LastName" Grid.Row="3" Grid.Column="1" Margin="3" Grid.ColumnSpan="2"/>
        <RadioButton Name="Male"  Grid.Row="4" Grid.Column="1" Margin="3" Content="Male" />
        <RadioButton Name="Female" Grid.Row="4" Grid.Column="2" Margin="3" Content="Female" />
        <TextBox Name="Phone" Grid.Row="5" Grid.Column="1" Margin="3" Grid.ColumnSpan="2"/>
        <TextBox Name="Address" Grid.Row="6" Grid.Column="1" Margin="3" Grid.ColumnSpan="2" TextWrapping="Wrap"/>
        <Button Name="Search" IsEnabled="False" Grid.Row="0" Grid.Column="2" Margin="3" MinWidth="100" MinHeight="25" HorizontalAlignment="Center" Content="Search" Click="Search_Click"/>
        <Button IsDefault="True" Grid.Row="7" Grid.Column="1" Margin="3" MinWidth="100" MinHeight="25" HorizontalAlignment="Center" Content="Add" Click="Add_Click"/>
        <Button Grid.Row="7" Grid.Column="2" Margin="3" MinWidth="100" MinHeight="25" HorizontalAlignment="Center" Content="Clear" Click="Clear_Click"/>

    </Grid>

【问题讨论】:

    标签: c# wpf linq


    【解决方案1】:

    为什么不使用数据绑定?

    对于您拥有的每个文本框,将您的 TextBox.Text 绑定到视图模型中的相应属性,如下所示:

    <TextBox Text={Binding FirstName} />
    

    然后,分配您的FirstNameLastName...等。属性值并为每个属性提高INotifyPropertyChanged.PropertyChanged(您的视图模型应该实现INotifyPropertyChanged)并且您的视图(即UI)应该得到更新。

    【讨论】:

      【解决方案2】:

      我不同意此处发布的任何答案。这个问题似乎不正确。

      如果您有家庭成员列表。那么如何将其显示为单个项目。你怎么知道你想显示哪个项目。

      因此我的建议是使用列表框并使用数据绑定,创建一个视图以在该视图中显示当前选定的家庭成员的数据。

      【讨论】:

        【解决方案3】:

        使用 foreach 循环遍历列表:

        foreach(var a in findFamily)
        {
        
            txtbox.text=a[0].tostring();
        
            txtbox2.text=a[1].tostring();
        
        }
        

        或使用:

         txtbox.text = findFamily.Select(a => a[0].ToString()).FirstOrDefault().ToString();
        

        【讨论】:

          猜你喜欢
          • 2018-01-16
          • 1970-01-01
          • 2020-01-10
          • 2013-04-11
          • 2012-09-05
          • 2011-07-19
          • 1970-01-01
          • 2019-12-27
          • 1970-01-01
          相关资源
          最近更新 更多