2011-01-18 6 views
0

Я привязываю наблюдаемую коллекцию на listBox. У меня есть данные tempate в элементе списка. Он содержит один элемент управления изображением и som textBlock.Показать «всплывающее окно», когда мы перейдем к элементу списка ListBox

Если есть мыши над на некоторых ListBox пункта я хотел бы достичь такого поведения:

  • Показать PopUp/ToolTip (некоторые «прямоугольник» с элементами управления) и связать значения из ListBox текущего элемента.
  • И на textBox в шаблоне данных элемента У меня есть стиль, я хотел бы изменить цвет текста в textBlock, например, от черного до зеленого.

Стиль здесь:

 <Style x:Key="FriedNickStyle" TargetType="TextBlock"> 
      <Setter Property="Margin" Value="2,2,2,2"/> 
      <Setter Property="FontSize" Value="13"/> 
      <Setter Property="FontWeight" Value="Medium"/> 
      <Setter Property="Foreground" Value="Black"/> 
     </Style> 

Сори за мой английский, я имею проблемы, как описать это поведение правильно. Я пробую много, но любой из них не работает хорошо.

Вот это мой стиль:

 <DataTemplate x:Key="FriendListBoxItemTemplate"> 
       <Grid Name="RootLayout"> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="0.3*"></ColumnDefinition> 
         <ColumnDefinition Width="*"></ColumnDefinition> 
        </Grid.ColumnDefinitions> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="60"></RowDefinition> 
        </Grid.RowDefinitions> 
        <Image Margin="4,4,4,2" Grid.Column="0"> 
         <Image.Source > 
          <MultiBinding Converter="{StaticResource avatarConverter}"> 
           <Binding Path="ProfilePhoto"></Binding> 
           <Binding Path="StatusInfo.IsLogged"></Binding> 
          </MultiBinding> 
         </Image.Source> 
        </Image> 
        <Grid Grid.Column="1"> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="*"></ColumnDefinition> 
         </Grid.ColumnDefinitions> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="*"></RowDefinition> 
         </Grid.RowDefinitions> 
        <TextBlock 
             Text="{Binding Path=Nick}" 
             Style="{StaticResource FriedNickStyle}" 
             Grid.Column="0" Grid.Row="0"> 
        </TextBlock> 
        </Grid> 
       </Grid> 
       <DataTemplate.Triggers> 
        <Trigger Property="IsMouseOver" Value="True"> 
         <!--SHOW SOME POP UP WINDOW and bind properties from ITEM (VALUE)--> 
<!--Change color of textBlock--> 
        </Trigger> 
       </DataTemplate.Triggers> 
      </DataTemplate> 

Спасибо всем, кто помогает мне.

+0

Вы спросили Google? – BlackBear

+0

Sory, finnaly I answe, это работает, но если это хорошее решение, я этого не делаю. –

ответ

1

Ну, я нашел это turorial, this article, by the MSDN и еще stack overflow's question. В принципе, вот как:

<Popup Margin="10,10,0,13" 
    Name="Popup1" 
    HorizontalAlignment="Left" 
    VerticalAlignment="Top" 
    Width="194" 
    Height="200" 
    IsOpen="True">      // change this to open it 

    <TextBlock Name="McTextBlock" Background="LightBlue" > 
     This is popup text 
    </TextBlock> 

+0

Привет, thak У меня есть аналогичное решение ... sory для глупого вопроса –

+0

@ user572844: добро пожаловать. Все задавали глупый вопрос;) – BlackBear