我在项目中添加了一个类文件。我希望能够访问后面的代码中的所有表单控件(网格,文本框,标签等...)但我没有像我在主要部分那样访问它们。我是否需要在添加的类中引用main?这是一个WPF项目!
我遗漏了代码以保持这篇文章的小:
namespace ClockMVC
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
ClockViewModel model = new ClockViewModel();
public MainWindow()
{
this.InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
这是班级
namespace ClockMVC
{
class ClockViewModel : INotifyPropertyChanged
{
// ClockViewModel model = new ClockViewModel();
private readonly System.Timers.Timer _timer;
public ClockViewModel()
{
答案 0 :(得分:1)
您需要在该类中引用MainWindow的实例,另外您应该将控件公开为属性,因为默认情况下它们是内部字段。
通常你不会通过引用直接使用控件,因为大多数东西是通过绑定完成的,或者你可以从各自的事件处理程序(强制转换sender
)获取控件并将其传递给ViewModel中的方法相应的参数。由于大多数数据都是绑定的,因此您可以自行修改数据和查看更新。
答案 1 :(得分:0)
如果你想知道如何绑定行的可见性,就像你在评论中所说的那样试试这样的话......
//在您的视图模型中..为您的行创建一个可见性属性
Public Visibility Line1
{
get
{
return m_Line1Visibility;
}
set
{
if(value != m_Line1Visibility)
{
m_Line1Visibility = value
OnPropertyChanged("Line1");
}
}
}
在您的视图中做类似的事情
<Line Visibility = {binding path = Line1}/>
现在每当你想显示或隐藏Line1更改属性时,如果绑定设置正确,一切都会神奇地起作用。
例如隐藏Line1 = Visibility.Hidden
和显示<{1}}