繁体   English   中英

xaml中的附加属性声明

[英]Attached property declaration in xaml

我正在创建附加属性。 我的附加类是helper:FocusDetail并具有2个属性。 第二个属性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>

但是textblock返回Window DataContext类型。 已经从Itemscontrol迭代中退出。

为什么绑定错误?

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

我需要附加的属性包含可视树控件。

绑定之所以中断,是因为它依赖于继承的DataContext,但是由于被分配给(非Content)属性而从FrameworkElement DataContext继承结构中移出。

从外观上看,您试图做的最好的解决方案可能是改为使用DataTemplate定义您的UI元素(此处为TextBlock),并为数据本身具有一个单独的属性,然后可以将其应用于模板一个ContentControl或ContentPresenter在树中您希望显示视觉效果的位置(我认为这是为了驱动某种工具提示/弹出窗口)。

     <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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM