我正在尝试更改某些按钮上的鼠标悬停效果,因为它们设置了不同的自定义背景颜色,因此当前将鼠标悬停在相同浅蓝色的方案不太适合。
我目前有这个:
<Style TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border Background="{TemplateBinding Background}" BorderBrush="Black" BorderThickness="2">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush Color="{Binding Path=Background}" Opacity="1" />
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush Color="{Binding Path=Background}" Opacity="0.5" />
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)
我似乎无法让它工作;我试图保持按钮上设置的背景颜色,但在鼠标悬停时将背景不透明度更改为 0.5。
更改整个按钮的不透明度有效,但我不想让文本/内容也消失,只是将背景颜色变暗。
AFAIK 在这里设置 SolidColorBrush 应该可以工作,但是如何从现有背景值中获取颜色值?
编辑:
在调整了@Clemens 的以下答案后,我有了这个,效果很好!
<Style TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
<Grid>
<Rectangle …Run Code Online (Sandbox Code Playgroud) 我正在使用该包在 Go 中编写 Windows 服务golang.org/x/sys/windows/svc。
到目前为止,一切都很顺利,而且很容易上手,我喜欢它。
我已经编写了一些自动更新功能,我希望该服务在完成更新后自行重新启动。
我尝试生成一个进程,该进程将使用 重新启动服务SCM,但它记录了一条错误消息,这似乎与在作为本地系统运行时尝试控制服务有关。
The service process could not connect to the service controller.
Run Code Online (Sandbox Code Playgroud)
更好/更简单的方法似乎是将os.Exit(1)服务Failure Actions设置为Restart on Failure,效果非常好!
唯一的麻烦是,似乎没有使用 Go 以编程方式配置这些选项的功能。
我做了一些挖掘,看起来它们是通过将结构传递给ChangeServiceConfig2in advapi32.dll- How to create service which restarts on crash 来配置的
在golang/sys/blob/master/windows/svc/mgr/config.go中-func updateDescription(handle windows.Handle, desc string) error
代码已经调用了windows.ChangeServiceConfig2DLL 调用的链接。
该SERVICE_FAILURE_ACTIONS结构的 Microsoft 文档位于此处。
我无法弄清楚如何使用 Go 构建和传递该结构 - 有人有任何见解吗?
今天,我们的开发容器在从Google Cloud SDK运行App Engine(GAE)标准本地开发环境时开始抛出错误.
ERROR 2017-12-15 09:38:37,766 http_runtime.py:396] bad runtime process port ['']
Traceback (most recent call last):
File "/opt/google-cloud-sdk/platform/google_appengine/_php_runtime.py", line 103, in <module>
_run_file(__file__, globals())
File "/opt/google-cloud-sdk/platform/google_appengine/_php_runtime.py", line 97, in _run_file
execfile(_PATHS.script_file(script_name), globals_)
File "/opt/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/php/runtime/runtime.py", line 39, in <module>
from google.appengine.tools.devappserver2 import wsgi_server
File "/opt/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/wsgi_server.py", line 34, in <module>
import ipaddr
ImportError: No module named ipaddr
Run Code Online (Sandbox Code Playgroud)
看起来它是由升级到自动发生的最新SDK引起的.
php google-app-engine google-cloud-platform google-cloud-sdk
我需要能够从Go应用程序中管理Windows本地用户帐户,并且似乎在不使用CGo的情况下,没有本机绑定。
我的最初搜索使人们说,最好使用“ exec.Command”来运行“ net user”命令,但是在解析响应代码时,这似乎是混乱且不可靠的。
我发现可以在netapi32.dll库中找到处理此类事件的函数,但是由于Go本身不支持Windows头文件,因此调用这些函数似乎并不容易。
以https://github.com/golang/sys/tree/master/windows中的示例为例,看来Go团队一直在重新定义其代码中的所有内容,然后调用DLL函数。
我很难将其包装在一起,但是我已经有了我要针对的低级API模板,然后像在Go运行时核心一样将高级API包装在其上。
type LMSTR ????
type DWORD ????
type LPBYTE ????
type LPDWORD ????
type LPWSTR ????
type NET_API_STATUS DWORD;
type USER_INFO_1 struct {
usri1_name LPWSTR
usri1_password LPWSTR
usri1_password_age DWORD
usri1_priv DWORD
usri1_home_dir LPWSTR
usri1_comment LPWSTR
usri1_flags DWORD
usri1_script_path LPWSTR
}
type GROUP_USERS_INFO_0 struct {
grui0_name LPWSTR
}
type USER_INFO_1003 struct {
usri1003_password LPWSTR
}
const (
USER_PRIV_GUEST = ????
USER_PRIV_USER = ????
USER_PRIV_ADMIN = ????
UF_SCRIPT = ????
UF_ACCOUNTDISABLE = ???? …Run Code Online (Sandbox Code Playgroud)