gpt4 book ai didi

.net - RaisePropertyChanged 不起作用

转载 作者:行者123 更新时间:2023-12-03 10:16:47 27 4
gpt4 key购买 nike

我有一个按钮,其内容与 ViewModel 的名为 Test 的属性绑定(bind)。

<Button Content="{Binding Test, Mode=TwoWay}"  
Name="button1"Click="button1_Click" />

单击按钮时,我正在更改其内容

private void button1_Click(object sender, System.Windows.RoutedEventArgs e)
{
button1.Content = "Yellow";
}

但是在属性 setter 中,我想覆盖正在设置的内容并设置我自己的内容。
以下是相同的代码:

string _test;
public string Test
{
get
{
return _test;
}
set
{
_test = "Something" + System.DateTime.Now.ToString();
RaisePropertyChanged(() => Test);
}
}

现在的问题是按钮的内容被设置为“黄色”而不是它应该是“某事......”

如果我同时将此属性与文本框绑定(bind),则该值将以正确的方式显示。

注:这只是一个例子,我的问题的重点是raisepropertychanged。

请帮忙。

最佳答案

这是一个非常奇怪的二传手,你真的不应该做这样的事情。如果我设置 Test = "Yellow" , 我希望它是 Yellow ,不是完全不同的东西。您应该将更新属性的代码放入一个单独的方法中,并从您的事件处理程序中调用:

string _test;
public string Test
{
get
{
return _test;
}
private set
{
_test = value;
RaisePropertyChanged(() => Test);
}
}

public void UpdateTest()
{
Test = "Something" + System.DateTime.Now.ToString();
}

private void button1_Click(object sender, System.Windows.RoutedEventArgs e)
{
UpdateTest();
}

关于.net - RaisePropertyChanged 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10062153/

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