How To set the UPROPERTY value correctly,(C++),in edtor mode ?

I created a widget Blueprint, the parent class is UMyUserWidget,and click SetValue,the value show is right,but it will reset after edit , rename a widget or add button or something .
I want save the widget name for do something -_- help。。。

UCLASS()
class MYPROJECT_API UMyUserWidget : public UUserWidget
{
	GENERATED_BODY()

public:

	UPROPERTY(EditAnywhere, BlueprintReadOnly,Category = "TEST")
	FString AValue;

	UFUNCTION(CallInEditor, Category = "TEST")
	void SetValue();

};


void UMyUserWidget::SetValue() {
	AValue = TEXT("NOT WORK -_-");
}

( 如何设置这个属性呢?使用C++,不是在编辑面板输入,点击SetValue,他会在细节面板显示,但是一旦有编辑行为 他就会重置,例如我把添加的按钮改了名字,请大神现身说法,感谢!!,我想把UI组件的名称保存起来,用来生成一些配置)

类和实例的关系你好像不太清楚。

编辑器函数修改的是类默认值,运行时的

是一个实例,不受你的

改变。

运行时这个函数根本就没被调用。

-------如何解决?------
在一个运行时生命周期都存在的类里(比如GameMode、PlayerController、GameInstance),用createwidget函数(不管是C++里也好,还是蓝图里也好)创建一个你的UMyUserWidget实例并保存为成员变量,然后运行一个带参数的
SetValue(FString InValue) {...};

感谢,我换了种方式 , 判断 widget 是否是变量(bIsVariable),也达到了需求