ozc*_*cho 13 c# wpf xaml binding
不确定这里做了什么,但绑定适用于数据模板中的标签,但不适用于工具提示.任何帮助将不胜感激.
<DataTemplate DataType="Label">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<StackPanel.ToolTip>
<ToolTip DataContext="{Binding Path=PlacementTarget,
RelativeSource={x:Static RelativeSource.Self}}">
<TextBlock Text="{Binding Path=DataContext.Description}" />
</ToolTip>
</StackPanel.ToolTip>
<Image Source="{StaticResource ApplicationInfoS}"
Margin="0 0 5 0" Stretch="None"
HorizontalAlignment="Left" />
<Label Style="{StaticResource lblTextContent}"
Padding="5 0 0 0"
Content="{Binding Path=DataContext.Description, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}}"/>
</StackPanel>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
BTW DataView是在Listview中使用的.绑定到列表视图的视图模型上存在"描述"属性.
我在VS2010的输出窗口中收到的消息是:
System.Windows.Data错误:39:BindingExpression路径错误:'object'''String'(HashCode = -466763399)'上找不到'Description'属性.BindingExpression:路径= DataContext.Description; DataItem ='StackPanel'(Name =''); target元素是'TextBlock'(Name =''); target属性是'Text'(类型'String')
UPDATE
我现在已经放弃了.暂时使用以下hack:
将标记添加到StackPanel并将"描述"绑定到它
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Tag="{Binding Path=DataContext.Description, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}}">
Run Code Online (Sandbox Code Playgroud)
将工具提示绑定到标记.是的,黑客,但它的工作原理.
<StackPanel.ToolTip>
<ToolTip DataContext="{Binding Path=PlacementTarget, RelativeSource={x:Static RelativeSource.Self}}">
<TextBlock Text="{Binding Path=Tag}" />
</ToolTip>
</StackPanel.ToolTip>
Run Code Online (Sandbox Code Playgroud)
干杯
麦克风
工具提示不需要亲属资源绑定.尝试这一点没有数据上下文绑定
<StackPanel.ToolTip>
<ToolTip Content={Binding Description} />
<StackPanel.ToolTip>
Run Code Online (Sandbox Code Playgroud)
这假设此DataTemplate所基于的Label类型具有名为Description的属性.您可能需要绑定到PlacementTarget的少数几个实例之一是在某些情况下使用ContextMenu控件.
| 归档时间: |
|
| 查看次数: |
24892 次 |
| 最近记录: |