Tôi đang học MVVM và WPF. Tôi có một tập tin xaml
trong dự án của tôi và có một trình xử lý sự kiện nhấp chuột đơn giản trong mã phía sau.Lệnh liên kết trong WPF bằng MVVM
Bây giờ tôi muốn làm tương tự trong MVVM. Tôi đã đọc rất nhiều bài báo và cũng đọc nhiều câu trả lời bằng sof. Nhưng vẫn không thể làm điều này.
Bất kỳ ai cũng có thể đưa ra một ví dụ đơn giản trong đó một nút nhấp vào sự kiện được thực hiện trong MVVM.
Sửa
<Window x:Class="WhiteBalance.BaseCalWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:uc="clr-namespace:NumberUpDownControl;assembly=NumberUpDownControl"
xmlns:viewn="clr-namespace:WhiteBalance.ViewModels"
Title="RefImgSettingWindow" Height="900" Width="1000" ResizeMode="NoResize"
BorderThickness="4">
<Window.Resources>
<viewn:DashBoardViewModel x:Key="demokey"></viewn:DashBoardViewModel>
</Window.Resources>
<Grid x:Name="gdParent" DataContext="{StaticResource demokey}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="490" />
<ColumnDefinition Width="488*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="300" />
<RowDefinition Height="300" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Grid.Column="0">
<Label Content="{Binding Path=NAME,Mode=TwoWay}" Height="28" Name="lblTest" />
<Button Content="Capture" Height="23" Name="btnCapture" Width="75" Command="{Binding Path=SaveCommand}"
Canvas.Left="94" Canvas.Top="254" />
</StackPanel>
</Grid>
</Window>
namespace WhiteBalance.ViewModels
{
public class DashBoardViewModel: ObservableObject
{
private string _name = "dsqdasd";
public string NAME
{
get { return _name; }
set { _name = value; }
}
public ICommand SaveCommand
{
get;
set;
}
private bool CanExecuteSaveCommand()
{
return true; // !string.IsNullOrEmpty(LastName);
}
private void CreateSaveCommand()
{
SaveCommand = new RelayCommand(SaveExecute, CanExecuteSaveCommand);
}
public void SaveExecute()
{
//Person.Save(_newPerson);
NAME = "Changed Name";
}
public DashBoardViewModel()
{
//objModel.TestText = "This will change";
NAME = "TestName";
}
}
}
Cảm ơn trước.
Bạn có đang sử dụng bất kỳ khung MVVM nào không? Bạn đã thử cái gì? –
Có bắt buộc phải sử dụng khung MVVM không? Tôi không biết về bất kỳ khung công tác nào. Điều duy nhất tôi nhận được là tôi cần phải sử dụng ICommand nhưng làm thế nào để sử dụng điều này và những thay đổi là cần thiết trong ViewModel, tôi không biết. – Narendra
Không, nhưng nó giúp A LOT, tôi muốn giới thiệu MVVM Light http://www.galasoft.ch/mvvm/ –