0

假设我有一个 textBlock 控件,我想将它传递给一个控制 textBlock 以显示某些消息的类。

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

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

在 XAML 中:我有

a) textBlock name=textBlockMsg b) 调用类的按钮

感谢你的帮助。

- 更新 :

项目内的这个类文件

公共类地理计算
{

     公共地理计算(){}


  公共无效计算距离()
  {
        //- 开始 -- 想要 textBlockMsg 显示:进行中......

       - 代码

     //--- 当结束时-----,textBlockMsg 可见性变为折叠


   }

}

4

2 回答 2

2

如果您TextBoxXAMLwith中命名您textBlockMsg,这将起作用

编辑 // 我不会实现整个 INotifyPropertyChanged 检查如何处理它:实现

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"}/>

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

你应该很高兴。如果这一切都是新的。我建议您阅读有关数据绑定 + MVVM 模式的信息。

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

希望这可以帮助。

于 2012-07-04T14:05:33.503 回答
0
  1. 您可以有一个参数来传递 TextBock:

    公共无效CalculateDistance(TextBlock tb){tb.Text =“正在进行中......”

    - 代码

    tb.Visibility = Visibility.Collapsed; }

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

    公共类 GeoCalculation { 私有 TextBlock _tb;

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

    }

顺便说一句,ViewModel 和使用 DataBinding 会更好!在那里,您可以使用我们的类(方法)为 ui(文本框)提供文本

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

于 2012-07-04T14:18:07.083 回答