我是WPF世界中的新手,并且想创建一个解决方案,以便在其中使用C#和XAML编写MVVM程序来执行一些简单的计算。
MainWindow xaml
有一个命名的外部网格View
。
(MainWindow.xaml.cs
)后面的xaml代码只能包含一个构造函数
将View.DataContext
设置为新ViewModel
类的实例。
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
View.DataContext = new ViewModel();
}
}
两个结果文本框,分别为:C = A + B,D = A * B。
答案 0 :(得分:1)
这看起来像是一个家庭作业问题,因此,我将为您提供一些一般性的提示,而不是完整的解决方案。
您的XAML需要4个文本框(尽管C和D是只读的,因此它们可能是TextBlocks)
您的ViewModel需要4个属性,这些属性绑定到这些框的Text属性。在A和B的设置器中,计算C和D的值。ViewModel还需要一个BackgroundColor属性。
在文本框中使用Interaction.Triggers(来自Microsoft.Expression.Interactions.dll)将事件传递到ViewModel,并更改BackgroundColor属性。
最后将窗口的Background属性绑定到BackgroundColor属性。
您应该能够为每个步骤查找示例(和说明)。
答案 1 :(得分:1)
在ViewModel
类中定义四个属性,A
,B
,C
和D
,并实现INotifyPropertyChanged接口。
C
和D
应该是只读的,并且每当PropertyChanged
或A
发生变化时,您都应该为它们增加B
。这是一个基本的示例,应该可以为您提供想法:
public class ViewModel : INotifyPropertyChanged
{
private int _a;
public int A
{
get { return _a; }
set { _a = value; NotifyPropertyChanged(nameof(C)); }
}
private int _b;
public int B
{
get { return _b; }
set { _b = value; NotifyPropertyChanged(nameof(C)); }
}
public int C => _a + _b;
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyPropertyChanged([CallerMemberName] String propertyName = "") =>
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
可以通过处理MouseEnter
的{{1}}和MouseLeave
事件并将窗口的TextBoxes
属性设置为Background
来实现背景更改。 。此功能纯粹是与视图相关的,不应在视图模型中实现。