基于对WPF的全新了解,我可以在ViewModel中设置值并将变量绑定(bind)到WPF控件,例如:

<TextBlock Text="{Binding [SomeViewModel].selfdefinedText}"/>

现在我想知道是否可以将相同的方法应用于StaticResource?如下通常是我引用ResourceLibrary的方式:
<Button Style="{StaticResource somestyle}"/>

现在,我可以绑定(bind)在viewModel中定义的变量,而不是在此处对somestyle进行硬编码吗?

如下所示:

在我的ViewModel中:
public string TestStyle
{
    get{ return _TestStyle;}
    set{ SetProperty(ref _TestStyle, value);}
}

TestStyle = "someStyle";

然后在我的XAML中:
<Button Style="{StaticResource [SomeViewModel].TestStyle}"/>

最佳答案

如果您的VM直接公开Style(可能是个坏主意),您将:

<Button Style="{Binding SomeStyleViaViewModel}"/>

另一方面,如果您的VM正在公开样式的键,则需要一个转换器:
<Button Style="{Binding SomeStyleKeyViaViewModel, Converter={StaticResource MyStyleConverter}}"/>

您的转换器基本上需要根据 key 查找Style

10-05 20:14