将类添加到我的项目并可以访问表单控件

时间:2011-05-13 05:59:04

标签: c# wpf

我在项目中添加了一个类文件。我希望能够访问后面的代码中的所有表单控件(网格,文本框,标签等...)但我没有像我在主要部分那样访问它们。我是否需要在添加的类中引用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()
        {

2 个答案:

答案 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}}