у меня есть задача по MVVM паттерну, но при реализации самого паттерна возникла проблема. Я не знаю как привязать поле в TextBox к переменной внутри кода. Я пробовал использовать DataContext но не до конца понял как он работает.
Код прилагается:
C#
public partial class MainWindow : Window
{
private string dir;
public string Dir
{
get => dir;
set
{
dir = value;
}
}
public MainWindow()
{
InitializeComponent();
this.DataContext = new MainViewModel();
string[] dirs = Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder.Desktop));
foreach (var i in dirs)
{
lbFiles.Items.Add(i);
}
}
}
XAML
<Window x:Class="home_wpf_mvvm_files.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:home_wpf_mvvm_files"
mc:Ignorable="d"
DataContext="{Binding MainWindow, Source={StaticResource Dir}}"
Title="MainWindow" Height="450" Width="800">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="3*"></RowDefinition>
<RowDefinition Height="3*"></RowDefinition>
<RowDefinition Height="30*"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"></ColumnDefinition>
<ColumnDefinition Width="10*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Button Margin="5,5" FontSize="15" FontWeight="Bold">Open</Button>
<TextBox Name="tbDirectory" Grid.Column="1" Margin="5,5"></TextBox>
<Label Grid.Row="1" Grid.ColumnSpan="2" FontSize="20" HorizontalAlignment="Center" VerticalAlignment="Top" FontWeight="Bold">Files</Label>
<ListBox Name="lbFiles" Grid.Row="2" Grid.ColumnSpan="2" Margin="10"></ListBox>
</Grid>
</Window>