[英]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.