从另一个窗口在清单框中添加值 [英] Adding value in checklist box from another window

查看:63
本文介绍了从另一个窗口在清单框中添加值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个带有两个选项卡的WPF应用程序.当我将文本框中的值添加到选中的列表框中时,将正确添加这些值.但是,当我从另一个窗口向选中的列表框中添加项目时,先前的值将被覆盖并且仅显示新值,主要问题是窗口打开的许多实例与在ckeck列表框中添加的项目一样多.
谢谢
我还提供了我的源代码..
请告诉我我该怎么办:
MainWindow.xaml

I have a WPF application with two tab. When I am adding the values from the text box to the checked list box, the values get added properly. But when I add the items in the checked list box from another window, the previous value is overiden and only the new value appears and main problem is that many instance of window opening as many item add in ckeck list box.
Thanks
I am also giving my source code..
Plz tell me what I need to do:
MainWindow.xaml

<pre lang="xml"><Window x:Class="WpfApplication9.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="536" Width="853">
    <Grid>
        <TabControl Height="260" HorizontalAlignment="Left" Margin="41,57,0,0" Name="tabControl1" VerticalAlignment="Top" Width="731">
            <TabItem Header="old" Name="tabItem1">
                <Grid>
                    <Grid Height="180" Margin="61,15,333,32" Width="327">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="10*" />
                            <ColumnDefinition Width="317*" />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="84*" />
                            <RowDefinition Height="81*" />
                        </Grid.RowDefinitions>
                        <TextBox Grid.ColumnSpan="2" Grid.Row="1" Height="23" HorizontalAlignment="Left" Margin="8,60,0,0" Name="textBox3" VerticalAlignment="Top" Width="209" />
                        <Button Content="add prev" Grid.Column="1" Height="28" HorizontalAlignment="Left" Margin="215,6,0,0" Name="btn_AssgnLesson" VerticalAlignment="Top" Width="96" Click="btn_AssgnLesson_Click" />
                        <Button Content="add here" Grid.Column="1" Grid.Row="1" Height="28" HorizontalAlignment="Left" Margin="215,57,0,0" Name="btn_ChgLesson" VerticalAlignment="Top" Width="96" Click="btn_ChgLesson_Click" />
                        <ListBox ItemsSource="{Binding Path=tripList}"  Grid.Column="1" Grid.RowSpan="2" Height="128" HorizontalAlignment="Left" Margin="13,6,0,0" Name="listLesson" Selector.IsSelected="{Binding IsChecked, ElementName=checkBox, Mode=TwoWay}" VerticalAlignment="Top" Width="194">
                            <ListBox.ItemTemplate>
                                <DataTemplate>
                                    <StackPanel Orientation="Horizontal">
                                        <CheckBox Margin="2" VerticalAlignment="Center" IsChecked="{Binding IsVisited}" />
                                        <TextBlock Margin="2" Foreground="Black" FontSize="14" Text="{Binding LessonName}" />
                                    </StackPanel>
                                </DataTemplate>
                            </ListBox.ItemTemplate>
                        </ListBox>
                    </Grid>
                </Grid>
            </TabItem>
            <TabItem Header="new">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition>
                        </ColumnDefinition>
                        <ColumnDefinition>
                        </ColumnDefinition>
                    </Grid.ColumnDefinitions>
                </Grid>
                <!--
                <GroupBox Header="groupBox1" Height="148" Name="groupBox1" Width="277">
                    <ListBox Height="74" Name="listLesson" Width="241" DataContext="{Binding}" IsSelected="{Binding IsChecked, ElementName=checkBox, Mode=TwoWay}">
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal">
                                    <CheckBox Margin="2" VerticalAlignment="Center" IsChecked="{Binding IsVisited}" />
                                    <TextBlock Margin="2" Foreground="Black" FontSize="14" Text="{Binding LessonName}" />
                                </StackPanel>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>
                </GroupBox>
                -->
            </TabItem>
        </TabControl>
    </Grid>
</Window


>



MainWindow.cs


>



MainWindow.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApplication9
{ 
   
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
      
        List<TripInfo> tripList = new List<TripInfo>();
        public MainWindow()
        {
            InitializeComponent();
            DataContext = this;
        }
    private void button1_Click(object sender, RoutedEventArgs e)
    {
        tripList.Add(new TripInfo(false, textBox3.Text));
        listLesson.Items.Refresh();

    }
   
        public class TripInfo

         {

        public TripInfo(bool isVisited, string cityName)

          {

             IsVisited = isVisited;

             LessonName = cityName;

         }


         public Boolean IsVisited

          { get; set; }


         public String LessonName

        { get; set; }
        }



        private void btn_AssgnLesson_Click(object sender, RoutedEventArgs e)
        {
            Window1 wd1 = new Window1();
            wd1.ShowDialog();
           
        }

        private void btn_ChgLesson_Click(object sender, RoutedEventArgs e)
        {
            tripList.Add(new TripInfo(false, textBox3.Text));
            listLesson.Items.Refresh();
        }

 
    }
}



Window1.xaml



Window1.xaml

<Window x:Class="WpfApplication9.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1" Height="300" Width="300">
    <Grid>
        <Button Content="add lesson" Height="23" HorizontalAlignment="Left" Margin="66,77,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
        <TextBox Height="23" HorizontalAlignment="Left" Margin="52,36,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" />
    </Grid>
</Window>



Window1.xaml.cs



Window1.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace WpfApplication9
{
     
  
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        public TripInfo tripInfo;
        MainWindow objmain = new MainWindow();
        List<TripInfo> tripList = new List<TripInfo>();
        public Window1()
        {
           
             InitializeComponent();
            objmain.listLesson.ItemsSource=tripList;
            InitializeComponent();
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {


         
            //logic to add value in check list box

        
            
           objmain.Show();
           tripList.Add(new TripInfo(false, textBox1.Text));
           objmain.listLesson.Items.Refresh();
        }
       
        public class TripInfo

         {

        public TripInfo(bool isVisited, string cityName)

          {

             IsVisited = isVisited;

             LessonName = cityName;

         }


         public Boolean IsVisited

          { get; set; }


         public String LessonName

        { get; set; }
        }


    }
}

推荐答案

您好,

不要仅使用LessonForAdding
之类的属性来创建实例
敌人的例子:

有这个:

Hello,

Don''t make instance just use a property like LessonForAdding

Foe example :

have this:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace WpfApplication9
{

    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        public string LessonForAdding { get; set; }
        public TripInfo tripInfo;
        MainWindow objmain = new MainWindow();
        List<TripInfo> tripList = new List<TripInfo>();
        public Window1()
        {
            InitializeComponent();
            objmain.listLesson.ItemsSource = tripList;
            InitializeComponent();
        }
        private void button1_Click(object sender, RoutedEventArgs e)
        {

            //logic to add value in check list box

            //      objmain.Show();
            //     tripList.Add(new TripInfo(false, textBox1.Text));
            //    objmain.listLesson.Items.Refresh();
            LessonForAdding = textBox1.Text;
            this.Close();
        }
        public class TripInfo
        {
            public TripInfo(bool isVisited, string cityName)
            {
                IsVisited = isVisited;
                LessonName = cityName;
            }

            public Boolean IsVisited
            { get; set; }

            public String LessonName
            { get; set; }
        }

    }
}




而这个:




And this:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfApplication9
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        List<TripInfo> tripList = new List<TripInfo>();
        public MainWindow()
        {
            InitializeComponent();
            DataContext = this;
        }
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            tripList.Add(new TripInfo(false, textBox3.Text));
            listLesson.Items.Refresh();
        }
        public class TripInfo
        {
            public TripInfo(bool isVisited, string cityName)
            {
                IsVisited = isVisited;
                LessonName = cityName;
            }

            public Boolean IsVisited
            { get; set; }

            public String LessonName
            { get; set; }
        }

        private void btn_AssgnLesson_Click(object sender, RoutedEventArgs e)
        {
            Window1 wd1 = new Window1();
            wd1.ShowDialog();
            TripInfo item = new TripInfo(false, wd1.LessonForAdding);
            listLesson.Items.Add(item);
//  objmain.Show();
//  tripList.Add(new TripInfo(false, textBox1.Text));
//  this.listLesson.Items.Refresh();            
        }
        private void btn_ChgLesson_Click(object sender, RoutedEventArgs e)
        {
            tripList.Add(new TripInfo(false, textBox3.Text));
            listLesson.Items.Refresh();
        }

    }
}


这篇关于从另一个窗口在清单框中添加值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆