WPF中资源之间的循环引用

时间:2018-02-12 08:57:28

标签: c# wpf binding resources

我有一个模板选择器资源,声明为:

<ResourceDictionary Source="BooleanPortTemplate.xaml" />
<ResourceDictionary Source="StringPortTemplate.xaml" />

  <common:TestStepPortTemplateSelector x:Key="portTemplateSelector"
                                       BooleanPortTemplate="{StaticResource booleanPortTemplate}"                                   
                                       StringPortTemplate="{StaticResource stringPortTemplate}"/>

用作:

<ListView Grid.Column="1"
                    ItemTemplateSelector="{StaticResource portTemplateSelector}"
                    ItemsSource="{Binding Value,
                                          Mode=TwoWay,
                                          UpdateSourceTrigger=PropertyChanged}" />

我想添加一个包含其他端口的新端口类型,因此我的模板应该知道模板选择器,模板选择器应该知道我的模板。这会带来两个错误:

  1. 我上面放置的资源不会看到其他资源。

  2. 我得到“在属性表达式中检测到循环”xaml错误。

  3. 如何解决这些问题并生成递归UI?

    代码错误:

    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="BooleanPortTemplate.xaml" />
        <ResourceDictionary Source="StringPortTemplate.xaml" />
    
        <ResourceDictionary>
    
          <converters:InverseBooleanConverter x:Key="InverseBooleanConverter" />
    
    
    
          <common:TestStepPortTemplateSelector x:Key="portTemplateSelectorKey2"
                                               BlockPortTemplate="{StaticResource blockPortTemplate}"
                                               BooleanPortTemplate="{StaticResource booleanPortTemplate}"                                       
                                               StringPortTemplate="{StaticResource stringPortTemplate}"/>
    
    
    
          <DataTemplate x:Key="blockPortTemplate">
            <Grid HorizontalAlignment="Stretch"
                  VerticalAlignment="Center"
                  Style="{StaticResource MainPortGridStyle}">
    
              <ListView Grid.Column="0"
                        ItemTemplateSelector="{StaticResource portTemplateSelectorKey2}"
                        ItemsSource="{Binding Value,
                                              Mode=TwoWay,
                                              UpdateSourceTrigger=PropertyChanged}" />
    
            </Grid>
    
          </DataTemplate>
    
    
        </ResourceDictionary>
    

      

    无法找到blockPortTemplate,因为它位于   selector和ItemTemplateSelector =“{StaticResource   portTemplateSelectorKey2}在行中检测到“行信号a”循环   属性异常。“xaml error。

0 个答案:

没有答案