WPF 弹出窗口 - 无法使用 DynamicResource
WPF Popup - not possible to use DynamicResource
我正在使用DropDownButton from the Xceed Wpf Toolkit。
在那个弹出窗口中,我只想显示一个手动填充的 ListView
。
ListViewItem
只是一个带有 Image
和 TextBlock
.
的垂直 StackPanel
<xceed:DropDownButton Grid.Column="4" x:Name="BurgerButton">
<xceed:DropDownButton.Content>
<Image Source="/Resources/BurgerMenu_128x128.png"/>
</xceed:DropDownButton.Content>
<xceed:DropDownButton.DropDownContent>
<ListView>
<ListViewItem cal:Message.Attach="[Event MouseUp] = [Action NewProject]">
<StackPanel Orientation="Vertical">
<Image Source="/Resources/FileNew_32x32.png"/>
<TextBlock Text="{DynamicResource ProjectSelectorView_NewProject}"/>
</StackPanel>
</ListViewItem>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="DataContext" Value="{Binding DataContext, ElementName=BurgerButton}"/>
</Style>
</ListView.ItemContainerStyle>
</ListView>
</xceed:DropDownButton.DropDownContent>
</xceed:DropDownButton>
我正在使用 Caliburn.Micro 在 ListViewItem
的 MouseUp
事件触发时触发 Action
。这很好用。问题是 <TextBlock Text="{DynamicResource ProjectSelectorView_NewProject}"/>
它只是空的,尽管资源在那里。在项目的其他任何地方, DynamicResource
语法都可以正常工作。它只是在 Popup
中不起作用。我知道 Popup 与主应用程序不在同一个 VisualTree 中 - 所以 DataContext
共享有点困难。
虽然这与 DataContext
无关,但它与 App.xaml
中定义的 ResourceDictionary
有关。我的 App.xaml
看起来像这样:
<Application x:Class="Projectname"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:CVBRecorder">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Localization/English.xaml"/>
<ResourceDictionary Source="/Localization/German.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
<ResourceDictionary>
<local:AppBootstrapper x:Key="bootstrapper" />
</ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
有人知道为什么 DynamicResource 不显示在 WPF 弹出窗口中吗?
显然这是 Xceed WPF 工具包中的错误。我使用的版本 3.2.0
有错误。更新到 3.4.0
解决了问题。
我正在使用DropDownButton from the Xceed Wpf Toolkit。
在那个弹出窗口中,我只想显示一个手动填充的 ListView
。
ListViewItem
只是一个带有 Image
和 TextBlock
.
StackPanel
<xceed:DropDownButton Grid.Column="4" x:Name="BurgerButton">
<xceed:DropDownButton.Content>
<Image Source="/Resources/BurgerMenu_128x128.png"/>
</xceed:DropDownButton.Content>
<xceed:DropDownButton.DropDownContent>
<ListView>
<ListViewItem cal:Message.Attach="[Event MouseUp] = [Action NewProject]">
<StackPanel Orientation="Vertical">
<Image Source="/Resources/FileNew_32x32.png"/>
<TextBlock Text="{DynamicResource ProjectSelectorView_NewProject}"/>
</StackPanel>
</ListViewItem>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="DataContext" Value="{Binding DataContext, ElementName=BurgerButton}"/>
</Style>
</ListView.ItemContainerStyle>
</ListView>
</xceed:DropDownButton.DropDownContent>
</xceed:DropDownButton>
我正在使用 Caliburn.Micro 在 ListViewItem
的 MouseUp
事件触发时触发 Action
。这很好用。问题是 <TextBlock Text="{DynamicResource ProjectSelectorView_NewProject}"/>
它只是空的,尽管资源在那里。在项目的其他任何地方, DynamicResource
语法都可以正常工作。它只是在 Popup
中不起作用。我知道 Popup 与主应用程序不在同一个 VisualTree 中 - 所以 DataContext
共享有点困难。
虽然这与 DataContext
无关,但它与 App.xaml
中定义的 ResourceDictionary
有关。我的 App.xaml
看起来像这样:
<Application x:Class="Projectname"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:CVBRecorder">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Localization/English.xaml"/>
<ResourceDictionary Source="/Localization/German.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
<ResourceDictionary>
<local:AppBootstrapper x:Key="bootstrapper" />
</ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
有人知道为什么 DynamicResource 不显示在 WPF 弹出窗口中吗?
显然这是 Xceed WPF 工具包中的错误。我使用的版本 3.2.0
有错误。更新到 3.4.0
解决了问题。