gpt4 book ai didi

wpf - 将 DynamicResource 绑定(bind)到 BasedOn 样式

转载 作者:行者123 更新时间:2023-12-01 01:22:27 27 4
gpt4 key购买 nike

我的要求是在具有以下情况的文本框上应用多种样式:

  1. 我在另一个文件中有一种样式(例如 MyTextStyle)说“Generic.xaml
  2. 我的文本框在 ABC.xaml
  3. 我想对这个文本框应用一些触发器,所以我必须使用 Textbox.Style
  4. 我也想应用“MyTextStyle

当我执行以下操作时,它会提示我无法将 DynamicResource 应用于 BasedOn:

<TextBox.Style>
<Style BasedOn="{DynamicResource MyTextStyle}" TargetType="{x:Type TextBox}">
<Setter Property="Text" Value="{Binding SelectedCall.Name}" />
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedCall.Name}" Value="N/A">
<Setter Property="Text" Value="" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>

请建议我一些解决方案,以便我可以应用此 Dynamicresource 以及我的数据触发样式

最佳答案

DynamicResource 更改为 StaticResource,如下所示:

<Style BasedOn="{StaticResource MyTextStyle}" TargetType="{x:Type TextBox}">

在 BasedOn 中有意不允许使用 DynamicResource。

编辑:你得到“找不到名为'EmptyTextBoxStyle'的资源”,因为应用程序找不到这个特定的静态资源。为了帮助应用程序找到它,您需要使用 MergedDictionary。这是如何在内部使用它的示例。窗口:

<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Generic.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>

在另一个 ResourceDictionary 中,您应该按如下方式使用它:

<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Generic.xaml" />
</ResourceDictionary.MergedDictionaries>

您需要以这种方式引用包含 EmptyTextBoxStyle 样式定义的 ResourceDictionary。因此,例如,如果在 Generic.xaml 文件中声明了“EmptyTextBoxStyle”,而您在 ABC.xaml 中使用它,您可以只使用上面的 XAML(当然,您需要根据您的项目结构更新 Source 属性)。

关于wpf - 将 DynamicResource 绑定(bind)到 BasedOn 样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12370052/

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