如何将textBlock控件传递给Class

时间:2012-07-04 13:51:41

标签: windows-phone-7

说我有一个textBlock控件,我想把它传递给一个控制textBlock来显示某个Message的类。

1)当我在类中调用一个方法时,我希望textBlock显示消息。示例“正在检查连接....”

2)当方法完成所需任务时,textBlock可见性将折叠。

在XAML中:我有

a)textBlock name = textBlockMsg b)拨打班级的按钮

感谢您的帮助。

- 更新:

项目中的这个类文件


public class  GeoCalculation
{

     public GeoCalculation()     {  }


  public void  CalculateDistance()
  {
        //- Begin -- want the textBlockMsg show  :  in progress......

       --code 

     //-- when end-----, textBlockMsg visibility becom collapse


   }

}

2 个答案:

答案 0 :(得分:2)

如果您使用TextBoxXAML中为您textBlockMsg命名,则可以使用

修改 //我不会实现整个INotifyPropertyChanged检查如何做到这一点:implement

public class CalculationClass : INotifyPropertyChanged    
{
      public void  CalculateDistance()
      {
       TextToBeBound = "in progress..."

       --code 

       VisibilityToBeBound = Collapsed;

      }
      public string TextToBeBound
      {  //... insert the implement of this property + NotifyPropertyChanged
        get {...} 
        set {...}
      }

      public Visibility VisibilityToBeBound
      {  //... insert the implement of this property + NotifyPropertyChanged
        get {...} 
        set {...}
      }

}

然后在XAML中添加:

<TextBlock x:Name="txtBlocMsg"  Visibility={"Binding VisibilityToBeBound"}  Text={Binding TextToBeBound"}/>

不要忘记将UI的DataContext设置为您的班级(在我的情况下为CalculationClass

你应该好好去。如果这一切都是新的。我建议你阅读有关数据Binding + MVVM模式的内容。

修改 将UI元素传递给模型/业务类是不好的做法。您应该使用MVVM模式。

希望这有帮助。

答案 1 :(得分:0)

  1. 您可以使用参数传递TextBock:

    public void CalculateDistance(TextBlock tb) {     tb.Text =“正在进行中...”

    - 代码

    tb.Visibility = Visibility.Collapsed; }

  2. 您可以使用类的构造函数来注入它应该处理的文本块

    公共类GeoCalculation {     private TextBlock _tb;

    public GeoCalculation(TextBlock tb)
    {
        _tb = tb;
    }
    
    public void  CalculateDistance()
    {
        _tb.Text = "in progress..."
    
       //code 
    
       _tb.Visibility = Visibility.Collapsed;
    }
    

    }

  3. 顺便说一下,ViewModel并使用DataBinding会更好! 在那里你可以使用我们的类(方法)来为ui(文本框)

    提供文本

    但要注意: 有一种.net方式可以做到这一点。 GeoCoordinate类包含一个方法“GetDistanceTo”来计算两个地理点之间的距离。见http://msdn.microsoft.com/en-us/library/system.device.location.geocoordinate.getdistanceto.aspx