说我有一个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 } }
答案 0 :(得分:2)
如果您使用TextBox
在XAML
中为您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)
您可以使用参数传递TextBock:
public void CalculateDistance(TextBlock tb) { tb.Text =“正在进行中...”
- 代码
tb.Visibility = Visibility.Collapsed; }
您可以使用类的构造函数来注入它应该处理的文本块
公共类GeoCalculation { private 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。