View的后台文件:
using System.Windows;
using System.Windows.Controls;
using System.Windows.Interactivity;
namespace AutoWebTool
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
private AutoGenerationVM _vm;
public MainWindow()
{
InitializeComponent();
DataContext = new AutoGenerationVM();
_vm = DataContext as AutoGenerationVM;
}
private bool sqlPath;
private void FilePathBrowse_Click(object sender, RoutedEventArgs e)
{
sqlPath = _vm.GetSqlFilePath();
}
private void WebSiteNameCheck_Click(object sender, RoutedEventArgs e)
{
var isInUse = _vm.CheckNameAndID();
if (isInUse)
{
MessageBox.Show("1.This name is Empty rn2.This name is in use,please change name!");
}
else
{
MessageBox.Show("No Problem!");
}
}
private void WebSiteIDCheck_Click(object sender, RoutedEventArgs e)
{
var isInUse = _vm.CheckNameAndID();
if (isInUse)
{
MessageBox.Show("1.This ID is Empty rn2.This ID is in use,please change ID!");
}
else
{
MessageBox.Show("No Problem!");
}
}
private bool physicalPath;
private void PathBrowse_Click(object sender, RoutedEventArgs e)
{
physicalPath = _vm.GetFolderPath();
}
private void WebSitePortCheck_Click(object sender, RoutedEventArgs e)
{
var isInUse = _vm.CheckWebPort();
if (isInUse)
{
MessageBox.Show("1.This port is Empty rn2.This port is in use,please change port!");
}
else
{
MessageBox.Show("No Problem!");
}
}
private void PoolNameCheck_Click(object sender, RoutedEventArgs e)
{
var isInUse = _vm.CkeckPoolName();
if (isInUse)
{
MessageBox.Show("1.This pool name is Empty rn2.This name is in use,please change name!");
}
else
{
MessageBox.Show("No Problem!");
}
}
private void Deploy_Click(object sender, RoutedEventArgs e)
{
var dataBaseServerAddressChecked = string.IsNullOrEmpty(_vm.ServerAddress);
var dataBaseUserChecked = string.IsNullOrEmpty(_vm.User);
var dataBasePasswordChecked = string.IsNullOrEmpty(_vm.Password);
var dataBaseScriptChecked = sqlPath;
var dataBaseCondition = !dataBaseServerAddressChecked && !dataBaseUserChecked && !dataBasePasswordChecked && !dataBaseScriptChecked;
var webSiteNameAndIDChecked = _vm.CheckNameAndID();
var webSitePortChecked = _vm.CheckWebPort();
var applicationPoolNameChecked = _vm.CkeckPoolName();
var webSiteCondition = !webSiteNameAndIDChecked && !physicalPath && !webSitePortChecked && !applicationPoolNameChecked;
if (dataBaseCondition&& webSiteCondition)
{
_vm.Execute();
}
else {
MessageBox.Show("Please Check Your Input!");
}
}
private void Close_Click(object sender, RoutedEventArgs e)
{
Close();
}
}
public static class PasswordBoxHelper
{
public static readonly DependencyProperty PasswordProperty =
DependencyProperty.RegisterAttached("Password",
typeof(string), typeof(PasswordBoxHelper),
new FrameworkPropertyMetadata(string.Empty, OnPasswordPropertyChanged));
private static void OnPasswordPropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
var passwordBox = sender as PasswordBox;
string password = (string)e.NewValue;
if (passwordBox != null && passwordBox.Password != password)
{
passwordBox.Password = password;
}
}
public static string GetPassword(DependencyObject dp)
{
return (string)dp.GetValue(PasswordProperty);
}
public static void SetPassword(DependencyObject dp, string value)
{
dp.SetValue(PasswordProperty, value);
}
}
public class PasswordBoxBehavior : Behavior<PasswordBox>
{
protected override void OnAttached()
{
base.OnAttached();
AssociatedObject.PasswordChanged += OnPasswordChanged;
}
private static void OnPasswordChanged(object sender, RoutedEventArgs e)
{
var passwordBox = sender as PasswordBox;
string password = PasswordBoxHelper.GetPassword(passwordBox);
if (passwordBox != null && passwordBox.Password != password)
{
PasswordBoxHelper.SetPassword(passwordBox, passwordBox.Password);
}
}
protected override void OnDetaching()
{
base.OnDetaching();
AssociatedObject.PasswordChanged -= OnPasswordChanged;
}
}
}










