zoukankan      html  css  js  c++  java
  • 【原】Silverlight:为DataGird的header设置tooltip

    1 引入xmlns:dataprimitives="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Data"

     2 定义一个Style:(使用Datagrid 的HeaderStyle引用这个Style即可,显示的Tooltip和文本是DataGrid的Header属性对应的值)

    1 <Style x:Key="DataGrid_Header_Tooltip" TargetType="dataprimitives:DataGridColumnHeader">
    2   <Setter Property="ContentTemplate">
    3     <Setter.Value>
    4       <DataTemplate>

    5        <TextBlock Text="{Binding}" ToolTipService.ToolTip="{Binding}"></TextBlock>

    6      </DataTemplate>

    7    </Setter.Value>

    8  </Setter>

    9</Style>

    补充说明:

    1 Datagrid->"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"

    2 DataGrid的Head和HeadStyle(下面说的情况主要用于MVVM,在View中,一切都是Binding的):

          Head用来保存数据(这个数据在XAML中总是以字符串来处理的),HeadStyle用来决定如何显示数据,比如上边的例子,设置Column的Head="ABC"那么,Head对应的值就为字符串ABC,headStyle中Text={Binding}就以ABC作为值显示出来。

         如果我Head中想放一个对应于ViewModel的属性,这个Binding的怎么写?

         第一个想法是直接在Head中使用Binding,比如Head={Binding xxx} 这种是不好使的,这么做的结果是,首先会调用xxx的ToString方法,然后把结果显示出来,如果设置的HeadStyle,那么HeadStyle中对应的是xxx.ToString得到的字符串。 

         第二种办法是使用Resource:

    <datagrid:DataGridTextColumn Header="{StaticResource DataGrid}" HeaderStyle="{StaticResource SelectAllTemplate}"></datagrid:DataGridTextColumn> 

    最好的办法:

    代码

    <UserControl x:Class="SilverlightApplication4.MainPage"
        xmlns
    ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x
    ="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d
    ="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc
    ="http://schemas.openxmlformats.org/markup-compatibility/2006"
                 xmlns:datagrid
    ="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"
                 xmlns:primitives
    ="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Data"
                 xmlns:local
    ="clr-namespace:SilverlightApplication4"
        mc:Ignorable
    ="d"
        d:DesignHeight
    ="300" d:DesignWidth="400">

        
    <UserControl.Resources>
            
    <ResourceDictionary>
                
    <Style x:Key="SelectAllTemplate" TargetType="primitives:DataGridColumnHeader">
                    
    <Setter Property="ContentTemplate">
                        
    <Setter.Value>
                            
    <DataTemplate>
                                
    <StackPanel>
                                    
    <CheckBox IsChecked="{Binding DataContext.SelectAll,ElementName=LayoutRoot}" />
                                
    </StackPanel>
                            
    </DataTemplate>
                        
    </Setter.Value>
                    
    </Setter>
                
    </Style>
            
    </ResourceDictionary>
        
    </UserControl.Resources>

        
    <Grid x:Name="LayoutRoot" Background="White">
            
    <datagrid:DataGrid x:Name="datagrid">
                
    <datagrid:DataGrid.Columns>
                    
    <datagrid:DataGridTextColumn HeaderStyle="{StaticResource SelectAllTemplate}" ></datagrid:DataGridTextColumn>
                
    </datagrid:DataGrid.Columns>
            
    </datagrid:DataGrid>
        
    </Grid>
    </UserControl>
  • 相关阅读:
    Visual Studio自带的的Developer Command Prompt对话框
    利用VS(Visual Studio)自带的工具查看DLL文件的信息
    谷歌面试官反馈级别
    Inno Setup中多语言时,使用占位符填充
    SQL*Plus命令
    Oracle 所有字典
    彻底完全卸载 SQL Server 2005 的图文教程
    win7(windows 7)系统下安装SQL2005(SQL Server 2005)图文教程
    创建表空间、新增用户、给用户赋予DBA权限 、删除用户下的上有数据表
    ORA-01012: not logged on
  • 原文地址:https://www.cnblogs.com/mycrystal/p/1893627.html
Copyright © 2011-2022 走看看