0

在我的项目 (ABC) 中,我有 MainWindow.xaml,我在其中定义了一个工具栏,该工具栏在 Resource/Views/ApplicationToolbar.xmal 下的项目中定义,如下所示:

我已经在我的 MainWindow.xaml 中引用了它, xmlns:local="clr-namespace:ABC"一旦我运行它,我就会收到一个错误,指出找不到 View123。

更多信息:(编辑)

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:local="clr-namespace:ABC">

    <StackPanel x:Key="View1">
        <Button Margin="3" Content="Test1"></Button>
        <Button Margin="3" Content="Test2"></Button>
    </StackPanel>

</ResourceDictionary>

现在在 MainWindow.xmal 中有:

<Window x:Class="ABC.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:ABC"
        Title="MainWindow" Height="350" Width="525">
    <Grid Margin="10">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="10"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="10"/>
        </Grid.RowDefinitions>

        <!-- FOLLOWING LINE CAUSING ERROR-->
        <ContentControl Name="Toolbar" Content="{StaticResource View1 }"></ContentControl>

    </Grid>
</Window>

我错过了什么?

谢谢,阿米特

4

2 回答 2

4

由于View1在单独中引用,ResourceDictionary您需要将其合并到ResourceDictionaryfor thisWindow中。

尝试将其添加到Window声明中的代码中:

<Window.Resources>
  <ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="Resource/Views/ApplicationToolbar.xaml"/>
  </ResourceDictionary.MergedDictionaries>
</Window.Resources>

此时你Window应该可以参考View1

注意:我尚未在 IDE 中对此进行全面测试,因此可能存在轻微的语法错误或路径问题。您可能必须使用Pack URI格式化您的字典 URL,以便正确解析引用。WPF 中的资源路径往往有点棘手。

于 2012-08-14T17:28:51.640 回答
0

谢谢大家。好的,我尝试了这里的建议,我很欣赏迈克,它接近解决方案。对我有用的是在App.xaml添加以下标签:

<Application.Resources>
    <ResourceDictionary Source="Resources/views/ApplicationToolbar.xaml"/>
</Application.Resources>

谢谢。阿米特

于 2012-08-14T17:41:41.340 回答