在运行时从 Panel 组件更改 CssStyle 属性 不起作用
DotVVM Change CssStyle property from a Panel component in runtime doesn't work
我试图通过按钮单击命令以编程方式从 Panel 组件更改 CssStyle 属性、'background-color',但没有任何反应。如果我在 ViewModel Load() 方法上设置 属性,则有效。页面加载后不。
DefaultViewModel class 范围:
private Panel p = new Panel();
DefaultViewModel,Load() 方法:
base.Context.View.Children.Add(p);
p.CssStyles.Add("height", "400px");
p.CssStyles.Add("width", "400px");
p.CssStyles.Add("background-color", "#c0c0c0");
按钮点击命令:
p.CssStyles.Remove("background-color");
p.CssStyles.Add("background-color", "#000fff");
有什么我忘了?
我的 dotVVM 版本是 2.2.155.0
Visual Studio 2019
.NET 框架 4.7.2
谢谢。
DotVVM 不会以这种方式工作,控件没有任何状态,因此在命令中操作它们没有多大意义。 DotVVM 中的控件只是 HTML 的薄包装,在第一次请求时发送给客户端。由于没有在命令上生成 HTML,因此控件的修改不会传播到浏览器(除非您在控件上使用 Postback.Update
属性)
您想将状态存储在视图模型中,然后将其数据绑定到控件。我不确定你到底想做什么,所以假设你想在某些情况下突出显示 div
。标记(在 dothtml 文件中)可能如下所示:
<div Style-background-color="{value: IsHighlighted ? "#000fff" : "#c0c0c0"}">
...
</div>
或者如果你更喜欢使用 css class
<div Class-highlight="{value: IsHighlighted}">
...
</div>
相应的视图模型将只包含 属性 IsHighlighted
并且您的命令将只分配 true
给它:
public bool IsHighlighted { get; set; }
public void DoSomething() {
this.IsHighlighted = true;
}
我试图通过按钮单击命令以编程方式从 Panel 组件更改 CssStyle 属性、'background-color',但没有任何反应。如果我在 ViewModel Load() 方法上设置 属性,则有效。页面加载后不。
DefaultViewModel class 范围:
private Panel p = new Panel();
DefaultViewModel,Load() 方法:
base.Context.View.Children.Add(p);
p.CssStyles.Add("height", "400px");
p.CssStyles.Add("width", "400px");
p.CssStyles.Add("background-color", "#c0c0c0");
按钮点击命令:
p.CssStyles.Remove("background-color");
p.CssStyles.Add("background-color", "#000fff");
有什么我忘了?
我的 dotVVM 版本是 2.2.155.0 Visual Studio 2019 .NET 框架 4.7.2
谢谢。
DotVVM 不会以这种方式工作,控件没有任何状态,因此在命令中操作它们没有多大意义。 DotVVM 中的控件只是 HTML 的薄包装,在第一次请求时发送给客户端。由于没有在命令上生成 HTML,因此控件的修改不会传播到浏览器(除非您在控件上使用 Postback.Update
属性)
您想将状态存储在视图模型中,然后将其数据绑定到控件。我不确定你到底想做什么,所以假设你想在某些情况下突出显示 div
。标记(在 dothtml 文件中)可能如下所示:
<div Style-background-color="{value: IsHighlighted ? "#000fff" : "#c0c0c0"}">
...
</div>
或者如果你更喜欢使用 css class
<div Class-highlight="{value: IsHighlighted}">
...
</div>
相应的视图模型将只包含 属性 IsHighlighted
并且您的命令将只分配 true
给它:
public bool IsHighlighted { get; set; }
public void DoSomething() {
this.IsHighlighted = true;
}