在 WPF 中使用 ResourceDictionary 仅输出“(Collection)”而不是 xaml 内容
Using ResourceDictionary in WPF outputs only "(Collection)" instead of the xaml content
在 WPF C# 中,使用 TabControl 创建带有 xaml 的主应用程序并导入带有 TabItem 的 ResourceDictionary 只会在应用程序上呈现通用标签“(Collection)”,即使在 visual studio预览.
MainWindow.xaml:
<Window x:Class="WpfAppPOC.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfAppPOC"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<TabControl>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="tab_input.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</TabControl>
</Window>
tab_input.xaml:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfAppPOC">
<TabItem x:Key="tab_inputs" Header="Input">
<StackPanel>
<GroupBox Header="Input Registers">
<Grid>
<Button>Excel Import</Button>
<Button>Sharepoint Import</Button>
<Button>Choose Path</Button>
<ComboBox>
<ComboBoxItem>
<TextBlock Foreground="Red">Providers</TextBlock>
</ComboBoxItem>
<ComboBoxItem>
<TextBlock Foreground="Green">Relations</TextBlock>
</ComboBoxItem>
<ComboBoxItem>
<TextBlock Foreground="Blue">Providers Contacts</TextBlock>
</ComboBoxItem>
</ComboBox>
<ProgressBar Minimum="0" Maximum="100" Name="pbStatus" />
</Grid>
</GroupBox>
</StackPanel>
</TabItem>
</ResourceDictionary>
如何正确渲染从其他文件导入的 ResourceDictionaries?
您应该将 TabItem
资源添加到 TabControl
而不是添加 ResourceDictionary
本身。试试这个:
<TabControl>
<TabControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="tab_input.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</TabControl.Resources>
<StaticResource ResourceKey="tab_inputs" />
</TabControl>
在 WPF C# 中,使用 TabControl 创建带有 xaml 的主应用程序并导入带有 TabItem 的 ResourceDictionary 只会在应用程序上呈现通用标签“(Collection)”,即使在 visual studio预览.
MainWindow.xaml:
<Window x:Class="WpfAppPOC.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfAppPOC"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<TabControl>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="tab_input.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</TabControl>
</Window>
tab_input.xaml:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfAppPOC">
<TabItem x:Key="tab_inputs" Header="Input">
<StackPanel>
<GroupBox Header="Input Registers">
<Grid>
<Button>Excel Import</Button>
<Button>Sharepoint Import</Button>
<Button>Choose Path</Button>
<ComboBox>
<ComboBoxItem>
<TextBlock Foreground="Red">Providers</TextBlock>
</ComboBoxItem>
<ComboBoxItem>
<TextBlock Foreground="Green">Relations</TextBlock>
</ComboBoxItem>
<ComboBoxItem>
<TextBlock Foreground="Blue">Providers Contacts</TextBlock>
</ComboBoxItem>
</ComboBox>
<ProgressBar Minimum="0" Maximum="100" Name="pbStatus" />
</Grid>
</GroupBox>
</StackPanel>
</TabItem>
</ResourceDictionary>
如何正确渲染从其他文件导入的 ResourceDictionaries?
您应该将 TabItem
资源添加到 TabControl
而不是添加 ResourceDictionary
本身。试试这个:
<TabControl>
<TabControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="tab_input.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</TabControl.Resources>
<StaticResource ResourceKey="tab_inputs" />
</TabControl>