gpt4 book ai didi

c# - 当 Bool 变量变为真时更改标签

转载 作者:行者123 更新时间:2023-11-30 13:31:11 25 4
gpt4 key购买 nike

我不太确定如何解释这个...我将把代码放在伪代码中以便于阅读

当一个类的 bool 变量发生变化时,我几乎想要一个标签来改变它的文本...我不确定我需要使用什么,因为我使用的是 WPF,而类不能只改变标签我不认为?

我需要某种事件吗?或 WPF 事件?感谢您的帮助

public MainWindow()
{
SomeClass temp = new SomeClass();

void ButtonClick(sender, EventArgs e)
{
if (temp.Authenticate)
label.Content = "AUTHENTICATED";
}
}

public SomeClass
{
bool _authenticated;

public bool Authenticate()
{
//send UDP msg
//wait for UDP msg for authentication
//return true or false accordingly
}
}

最佳答案

BradledDotNet 答案以外的另一种 WPF 方法是使用触发器。这将完全基于 XAML,没有转换器代码。

XAML:

<Label>
<Label.Style>
<Style TargetType="Label">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsAuthenticated}" Value="True">
<Setter Property="Content" Value="Authenticated" />
</DataTrigger>
</Style.Triggers>
</Style>
</Label.Style>
</Label>

与 BradledDotNet 提到的规则相同,应附加 ViewModel 并且“IsAuthenticated”属性应引发 PropertyChanged 事件。

-- 按照 Gayot Fow 的建议添加一些样板代码 --

查看隐藏代码:

为简单起见,我将在后面的代码中设置 View 的 DataContext。为了获得更好的设计,您可以按照说明使用 ViewModelLocator here .

public partial class SampleWindow : Window
{
SampleModel _model = new SampleModel();

public SampleWindow() {
InitializeComponent();
DataContext = _model; // attach the model/viewmodel to DataContext for binding in XAML
}
}

示例模型(应该是ViewModel):

这里的要点是附加模型/ View 模型必须实现 INotifyPropertyChanged。

public class SampleModel : INotifyPropertyChanged
{
bool _isAuthenticated = false;

public bool IsAuthenticated {
get { return _isAuthenticated; }
set {
if (_isAuthenticated != value) {
_isAuthenticated = value;
OnPropertyChanged("IsAuthenticated"); // raising this event is key to have binding working properly
}
}
}

public event PropertyChangedEventHandler PropertyChanged;

void OnPropertyChanged(string propName) {
if (PropertyChanged != null) {
PropertyChanged(this, new PropertyChangedEventArgs(propName));
}
}
}

关于c# - 当 Bool 变量变为真时更改标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23641688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com