Fix bindings

This commit is contained in:
2021-12-04 14:54:21 +01:00
parent 5d761a5920
commit 321e67e400
4 changed files with 75 additions and 12 deletions

View File

@@ -5,7 +5,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:ExeLauncher.GUI"
mc:Ignorable="d"
DataContext="{Binding RelativeSource={RelativeSource Self}}"
d:DataContext="{d:DesignInstance local:ApplicationModel}"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
<Grid.ColumnDefinitions>
@@ -20,15 +20,15 @@
</Grid.RowDefinitions>
<!--Path-->
<TextBlock Grid.Column="0" Grid.Row="0" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="5" Text="Path:" />
<TextBox Grid.Column="1" Grid.Row="0" Margin="5" VerticalContentAlignment="Center" Text="{Binding ApplicationPath}" />
<TextBox Grid.Column="1" Grid.Row="0" Margin="5" VerticalContentAlignment="Center" Text="{Binding Path}" />
<Button Grid.Column="2" Grid.Row="0" Margin="5" Padding="5,2" Content="Browse" Click="Button_Path" />
<!--Arguments-->
<TextBlock Grid.Column="0" Grid.Row="1" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="5" Text="Arugments:" />
<TextBox Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="2" Margin="5" VerticalContentAlignment="Center" Text="{Binding ApplicationArguments}" />
<TextBox Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="2" Margin="5" VerticalContentAlignment="Center" Text="{Binding Arguments}" />
<!--Working Directory-->
<TextBlock Grid.Column="0" Grid.Row="2" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="5" Text="Working Directory:" />
<TextBox Grid.Column="1" Grid.Row="2" Grid.ColumnSpan="2" Margin="5" VerticalContentAlignment="Center" Text="{Binding ApplicationWorkingDirectory}" />
<TextBox Grid.Column="1" Grid.Row="2" Grid.ColumnSpan="2" Margin="5" VerticalContentAlignment="Center" Text="{Binding WorkingDirectory}" />
</Grid>
</UserControl>

View File

@@ -54,8 +54,6 @@ namespace ExeLauncher.GUI
public AppControl()
{
InitializeComponent();
//DataContext = this;
}
private void Button_Path(object sender, RoutedEventArgs e)

View File

@@ -1,16 +1,81 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
namespace ExeLauncher.GUI
{
public record ApplicationModel
public record ApplicationModel : INotifyPropertyChanged
{
public int Number { get; set; } = 1;
public string Path { get; set; } = "";
public string Arguments { get; set; } = "";
public string WorkingDirectory { get; set; } = "";
private int _number = 1;
public int Number
{
get => _number;
set
{
if (_number != value)
{
_number = value;
NotifyPropertyChanged();
}
}
}
private string _path = "";
public string Path
{
get => _path;
set
{
if (_path != value)
{
_path = value;
NotifyPropertyChanged();
}
}
}
private string _arguments = "";
public string Arguments
{
get => _arguments;
set
{
if (_arguments != value)
{
_arguments = value;
NotifyPropertyChanged();
}
}
}
private string _workingDirectory = "";
public string WorkingDirectory
{
get => _workingDirectory;
set
{
if (_workingDirectory != value)
{
_workingDirectory = value;
NotifyPropertyChanged();
}
}
}
public event PropertyChangedEventHandler? PropertyChanged;
private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}

View File

@@ -55,7 +55,7 @@
<ListView.ItemTemplate>
<DataTemplate>
<GroupBox Header="{Binding Number}" HeaderStringFormat="Application {0}">
<local:AppControl ApplicationPath="{Binding Path}" ApplicationArguments="{Binding Arguments}" ApplicationWorkingDirectory="{Binding WorkingDirectory}" />
<local:AppControl ApplicationPath="{Binding Path, Mode=TwoWay}" ApplicationArguments="{Binding Arguments, Mode=TwoWay}" ApplicationWorkingDirectory="{Binding WorkingDirectory, Mode=TwoWay}" />
</GroupBox>
</DataTemplate>
</ListView.ItemTemplate>