代码之家  ›  专栏  ›  技术社区  ›  ebattulga

在xaml中附加属性声明

  •  0
  • ebattulga  · 技术社区  · 15 年前

    helper:FocusDetail 有两个属性。第二财产 DetailBody 类型是object。我正在对项目控件使用此属性

    <ItemsControl ItemsSource="{Binding Riches}" BorderThickness="0">
       <ItemsControl.ItemTemplate>
          <DataTemplate>
             <TextBox Text="{Binding TextInfo}"
                 helper:FocusDetail.DetailTitle="{StaticResource strTitle}"
                 helper:FocusDetail.DetailBody="{Binding Description}"
                 />
         </DataTemplate>
       </ItemsControl.ItemTemplate>
    </ItemsControl>
    

    那是成功的

    <DataTemplate>
       <TextBox Text="{Binding TextInfo}"
             helper:FocusDetail.DetailTitle="{StaticResource strTitle}">
           <helper:FocusDetail.DetailBody>
               <Binding Path="Description"/>
           </helper:FocusDetail.DetailBody>
       </TextBox>  
    </DataTemplate>
    

    那是工作 我又换衣服了

    <DataTemplate>
       <TextBox Text="{Binding TextInfo}"
             helper:FocusDetail.DetailTitle="{StaticResource strTitle}"
             >
             <helper:FocusDetail.DetailBody>
                <TextBlock Text="Some static text"></TextBlock>
             </helper:FocusDetail.DetailBody>
       </TextBox>  
    

    这很管用。我最后的零钱来了

    <DataTemplate>
       <TextBox Text="{Binding TextInfo}"
             helper:FocusDetail.DetailTitle="{StaticResource strTitle}">
            <helper:FocusDetail.DetailBody>
               <TextBlock Text="{Binding Description}"></TextBlock>
            </helper:FocusDetail.DetailBody>
       </TextBox>  
    </DataTemplate>
    

    这不是工作。文本块为空。

    我在改变

    <TextBlock Text="{Binding Description}"></TextBlock>

    <TextBlock Text="{Binding }"></TextBlock> .

    为什么装订错误?

    如何像最后一个代码一样声明附加属性?

    1 回复  |  直到 14 年前
        1
  •  1
  •   John Bowen    15 年前

    您的绑定正在断开,因为它依赖于继承的DataContext,但正通过分配给(非内容)属性从FrameworkElement DataContext继承结构中取出。

         <TextBox Text="{Binding TextInfo}"
             helper:FocusDetail.DetailTitle="{StaticResource strTitle}"
             helper:FocusDetail.DetailBody="{Binding}"
             >
             <helper:FocusDetail.DetailBodyTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Description}"></TextBlock>
                </DataTemplate>
             </helper:FocusDetail.DetailBodyTemplate>
         </TextBox>