我正在用mvvm light在wpf中工作。我想从数据网格中选择数据并将其放在文本框中。 我尝试了可能的解决方案,但没有用。所以希望从这里获得解决方案。
让我解释一下我的项目方案。
UI:
<Grid ShowGridLines="True">
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<StackPanel Orientation="Vertical" HorizontalAlignment="Center"
Grid.Row="0"
VerticalAlignment="Center">
<StackPanel Orientation="Horizontal" Margin="0,0,0,10">
<TextBlock Name="name" Text="Name:" Margin="0,0,30,0"></TextBlock>
<TextBox x:Name="text1"
Text="{Binding UserLoginData.Name,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
Width="100"></TextBox>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,0,0,10">
<TextBlock Name="password" Text="Password:" Margin="0,0,12,0"></TextBlock>
<TextBox x:Name="text2"
Text="{Binding UserLoginData.Password,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
Width="100"></TextBox>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,0,0,0">
<Button Content="Login" Margin="0,0,25,0" Padding="5"
Command="{Binding SaveCommand}">
</Button>
</StackPanel>
</StackPanel>
<DataGrid Grid.Row="1" x:Name="MainDataGrid"
ItemsSource="{Binding users}"
SelectedItem="{Binding Path=SelectedUsers,Mode=TwoWay}" SelectionChanged="MainDataGrid_SelectionChanged">
</DataGrid>
</Grid>
我在这里有两个文本框,名称和密码。当我们为该文本框提供值时,该值在我的数据库中保存,并添加到Datagrid中,如下图所示。
现在我想要的是,当我们从Datagrid中选择一个数据时,应该将其添加到两个文本框中,以便我可以执行更新,删除操作。但是在这里,当我选择时,我无法从文本框中的datagrid获取数据。
我在这里为您提供我的视图模型,数据上下文和模型类。因此您可以从中找到解决方案。
查看模型类:
public class UserLoginViewModel:ViewModelBase
{
public UserLoginViewModel()
{
UserLoginData = new UserLoginData();
users = new ObservableCollection<UserLoginData>(GetUsers());
}
internal IEnumerable<UserLoginData> GetUsers()
{
DataBaseContext baseContext = new DataBaseContext();
return baseContext.userLogins.ToList();
}
private ObservableCollection<UserLoginData> _SelectedUsers;
public ObservableCollection<UserLoginData> SelectedUsers
{
get => _SelectedUsers;
set
{
if(value != _SelectedUsers)
{
_SelectedUsers = value;
RaisePropertyChanged();
}
}
}
private ObservableCollection<UserLoginData> _users;
public ObservableCollection<UserLoginData> users
{
get => _users;
set { _users = value; RaisePropertyChanged(); }
}
private UserLoginData _UserLoginData;
public UserLoginData UserLoginData
{
get => _UserLoginData;
set { _UserLoginData = value; RaisePropertyChanged(); }
}
public ICommand SaveCommand => new RelayCommand(SaveData);
public object ObservableCollectoin { get; private set; }
private void SaveData()
{
DataBaseContext baseContext = new DataBaseContext();
baseContext.userLogins.Add(UserLoginData);
baseContext.SaveChanges();
}
}
}
数据上下文:
public class DataBaseContext: DbContext
{
public DataBaseContext() : base("DbBindingContext")
{
}
public DbSet<UserLoginData> userLogins { get; set; }
}
型号:
public class UserLoginData
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public string Password { get; set; }
}
告诉我我错了,应该怎么做。
希望可以得到更好的解决方案。 预先感谢。