C# 如何从视图中获取对象TextBlock并在ViewModel中对其进行操作?
我正在使用Caliburn.Micro和c 我想要一种方法,比如在android中,通过id在xaml视图中查找TextBlock,这样我就可以操纵它的属性 我本来想做这样的事情,但是为了c:C# 如何从视图中获取对象TextBlock并在ViewModel中对其进行操作?,c#,wpf,caliburn.micro,C#,Wpf,Caliburn.micro,我正在使用Caliburn.Micro和c 我想要一种方法,比如在android中,通过id在xaml视图中查找TextBlock,这样我就可以操纵它的属性 我本来想做这样的事情,但是为了c: TextBlock textblock = (TextBlock ) myView.findViewById(R.id.myTextBlock); 所以我可以折叠起来,让它再次可见 <TextBlock x:Name="MyTextBlockId" Text="Inc
TextBlock textblock = (TextBlock ) myView.findViewById(R.id.myTextBlock);
所以我可以折叠起来,让它再次可见
<TextBlock x:Name="MyTextBlockId"
Text="Incorrect user credentials. Forgot password, click here"
Visibility="Collapsed"/>
MVVM方法
视图模型
class MyViewModel : PropertyChangedBase
{
private bool _isBadLogin;
public bool IsBadLogin
{
get => _isBadLogin;
set => Set(ref _isBadLogin, value);
}
}
XAML
您试图从哪个类操作TextBlock?它是一个登录页面。所以,在一次失败的尝试中,我将取消折叠一个文本块,该文本块将显示忘记密码单击此处。我打算在viewmodel中执行此操作,您不应该在viewmodel中执行控制操作。视图应该知道viewmodel。而不是相反。例如,如果您有一个名为IsBadLogin的布尔属性,则可以将TextBlock的可见性绑定到该属性,并使用BooleanToVisibilityConverter。对于任何使用caliburn.Micro的人,您不需要扩展PropertyChangedBase,因为Screen继承PropertyChangedBase。始终是Prism/MVVMLight的人:
<TextBlock x:Name="MyTextBlockId"
Text="Incorrect user credentials. Forgot password, click here"
Visibility="{Binding IsBadLogin, Converter={StaticResource BooleanToVisibilityConverter}"/>