【发布时间】:2019-12-01 06:47:01
【问题描述】:
我正在创建一个地址簿应用程序。我目前有 MainWindow.xaml:
<Window x:Class="AddressBook.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:AddressBook"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="20"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="20"/>
<RowDefinition Height="*"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="20"/>
</Grid.RowDefinitions>
<Button Width="100" Height="50" Grid.Column="2" Grid.Row="2" Margin="0 0 0 50" Click="Button_Click">New Contact</Button>
<Button Width="100" Height="50" Grid.Column="2" Grid.Row="3" Margin="0 0 0 50">Edit Contact</Button>
<Button Width="100" Height="50" Grid.Column="2" Grid.Row="4" Margin="0 0 0 50">Delete Contact</Button>
<ListView Margin="10" Name="lvContacts" Grid.Column="3" Grid.ColumnSpan="4" Grid.Row="1" Grid.RowSpan="4" >
<ListView.Resources>
<Style TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="HorizontalContentAlignment" Value="Left"/>
</Style>
</ListView.Resources>
<ListView.View>
<GridView>
<GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding Name}" ></GridViewColumn>
<GridViewColumn Header="Age" Width="50" DisplayMemberBinding="{Binding Age}" ></GridViewColumn>
<GridViewColumn Header="Mail" Width="150" DisplayMemberBinding="{Binding Mail}" ></GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</Grid>
MainWindow.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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 AddressBook
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
NewContact newContact;
public MainWindow()
{
InitializeComponent();
List<Contact> items = new List<Contact>();
items.Add(new Contact() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com" });
items.Add(new Contact() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com" });
items.Add(new Contact() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com" });
lvContacts.ItemsSource = items;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
newContact = new NewContact();
newContact.Show();
}
}
public class Contact
{
public string Name { get; set; }
public int Age { get; set; }
public string Mail { get; set; }
}
}
当用户单击“新建联系人”按钮时,它会创建一个名为“NewContact.xaml”的第二个窗口
<Window x:Class="AddressBook.NewContact"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:AddressBook"
mc:Ignorable="d"
Title="NewContact" Height="348.322" Width="516.107">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="40"/>
<ColumnDefinition Width="200"/>
<ColumnDefinition Width="20"/>
<ColumnDefinition Width="200"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="40"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="20"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="20"/>
</Grid.RowDefinitions>
<!--Title Label Column-1 Row-1 -->
<Label Grid.Column="1" Grid.ColumnSpan="4" Grid.Row="1" HorizontalAlignment="Center" FontSize="24" FontWeight="Black">New Contact</Label>
<!--First Name-->
<Label Grid.Column="1" Grid.Row="2">First Name</Label>
<TextBox Grid.Column="1" Grid.Row="3" ></TextBox>
<!--Last Name-->
<Label Grid.Column="3" Grid.Row="2">Last Name</Label>
<TextBox Grid.Column="3" Grid.Row="3"></TextBox>
<!--Address-->
<Label Grid.Column="1" Grid.Row="4">Address</Label>
<TextBox Grid.Column="1" Grid.ColumnSpan="3" Grid.Row="5"></TextBox>
<!--Email-->
<Label Grid.Column="1" Grid.Row="6">Email</Label>
<TextBox Grid.Column="1" Grid.ColumnSpan="3" Grid.Row="7"></TextBox>
<!--Phone Number-->
<Label Grid.Column="1" Grid.Row="8">Phone Number</Label>
<TextBox Grid.Column="1" Grid.Row="9"></TextBox>
<Button x:Name="Submit_Button" Grid.Column="1" Grid.Row="10" Width="75" Height="25" Margin="0 20 0 20">Submit</Button>
<Button x:Name="Cancel_Button" Grid.Column="3" Grid.Row="10" Width="75" Height="25" Margin="0 20 0 20" Click="Cancel_Button_Click">Cancel</Button>
</Grid>
我希望用户能够在单击 Cancel_Button 时关闭 NewContact 窗口。
我的第一个想法是执行以下操作,但我不知道如何正确实施它,我知道我遗漏了一些东西或不明白这应该如何工作并且需要一些指导。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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 AddressBook
{
/// <summary>
/// Interaction logic for NewContact.xaml
/// </summary>
public partial class NewContact : Window
{
public NewContact()
{
InitializeComponent();
}
private void Cancel_Button_Click(object sender, RoutedEventArgs e)
{
NewContact NewContact = new NewContact();
NewContact.Close();
}
}
}
感谢任何帮助!
【问题讨论】: