我想在打开之前在GridView工具提示中添加图片

时间:2018-02-19 16:26:23

标签: c# wpf xaml

我在XAML中创建RadGridVieaw控件自定义工具提示,当打开工具提示时,我想读取行并获取ID然后从数据库加载图片。

1步我创建自定义工具提示

      <Style TargetType="{x:Type telerik:GridViewRow}" BasedOn="{StaticResource GridViewRowStyle}" >
                      <Setter Property="ToolTipService.IsEnabled" Value="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerik:RadGridView}}}" />
                <Setter Property="ToolTip" >
                    <Setter.Value>
        <ToolTip ToolTipService.ShowDuration="1000000" >
        <Grid > 
        <Border HorizontalAlignment="Left" Height="170" Margin="5,0,0,0" 
        VerticalAlignment="Top" Width="130" BorderBrush="#FFCED8DA" BorderThickness="1" Padding="1">
    <Image  x:Name="GeneralTabItem_EmployeeImage" Source="{Binding CRAPhotoPhoto, Converter={StaticResource BinaryArrayToURIConverter}}"  Stretch="UniformToFill"
    Width="120" Height="160"/>
       </Border>
       <Grid/>
 <telerik:RadGridView x:Name="ExtnedPrisonerInfoView_DataInput_ListGrid" HorizontalAlignment="Stretch" Margin="0,0,0,0" VerticalAlignment="Stretch" ToolTipService.ShowDuration="100000000"
                    DataContext="{Binding ''}" ToolTipOpening="OnContentChanged">

        </telerik:RadGridView>

2步我想在catch事件开启工具提示后面编码。

3步将图片附加到打开工具提示图像名称=&#34; GeneralTabItem_EmployeeImage&#34;

请帮我ToolTipOpening事件无效。

2 个答案:

答案 0 :(得分:1)

就事件处理程序而言,这应该有效:

<Style TargetType="{x:Type telerik:GridViewRow}"  BasedOn="{StaticResource GridViewRowStyle}" >
    <EventSetter Event="ToolTipOpening" Handler="outerGrid_ToolTipOpening" />
    ...

但是如果你想对Image中的ToolTip做一些事情,你需要等到它被创建。您也可以处理Loaded的{​​{1}}事件并在其中设置Image

Source

XAML:

private void GeneralTabItem_EmployeeImage_Loaded(object sender, RoutedEventArgs e)
{
    Image img = sender as Image;
    //set source...
}

显然,在打开工具提示之前,您将无法设置<Setter Property="ToolTip" > <Setter.Value> <ToolTip ToolTipService.ShowDuration="1000000"> <Grid> <Border HorizontalAlignment="Left" Height="170" Margin="5,0,0,0" VerticalAlignment="Top" Width="130" BorderBrush="#FFCED8DA" BorderThickness="1" Padding="1"> <Image x:Name="GeneralTabItem_EmployeeImage" Stretch="UniformToFill" Width="120" Height="160" Loaded="GeneralTabItem_EmployeeImage_Loaded"/> </Border> <Grid/> </Grid> </ToolTip> </Setter.Value> </Setter> Source的{​​{1}}属性,因为然后没有Image。所以这没有多大意义。

答案 1 :(得分:0)

首先创建一个简单的工具提示:

<Style TargetType="telerik:GridViewRow" BasedOn="{StaticResource 
  GridViewRowStyle}">
  <Setter Property="ToolTip">
      <Setter.Value>
          <ToolTip>
              <TextBlock Text="{Binding EmployeeName}"></TextBlock>
           </ToolTip>
      </Setter.Value>
   </Setter>
</Style>

验证是否有效以及是否确实开始添加更复杂的内容(如转换器和ToolTipService),以确定是什么原因导致XAML无效,因为XAML错误是导致事件无法触发的唯一原因。 ..