2010-10-30 3 views
1

Я новичок в WPF. У меня есть эта проблема. Я привязываю элементы списка listBox. У меня есть собственный стиль в списке. Элемент ListBox состоит из Image и textBlocks. Он работает хорошо. Мне нужно сделать увеличение на элементе listBox, когда мышь закончилась над этим элементом. Я пытаюсь использовать триггеры, но я не знаю, как изменить размер элемента listBox.Масштабирование на элементе списка

C# код:

namespace ListBoxStyle 
{ 
    public partial class MainWindow : Window 
    { 
     public class User { 

      public String Id { get; set; } 
      public Boolean IsFriend { get; set; } 
      public Uri ImageUri { get; set; } 

      public User(String azetId, Boolean isFriend, string imageUri) 
      { 
       Id = azetId; 
       IsFriend = isFriend; 
       ImageUri = new Uri(imageUri); 
      } 

      public override string ToString() 
      { 
       return Id; 
      } 
     } 

     public static class Users 
     { 
      public static IEnumerable<User> GetUsers() 
      { 
       var users = new List<User> { 
          new User("Id1",false,@"http://213.215.107.127/fotky/1751/34/v_17513478.jpg?v=2"), 
          new User("Id2",false,@"http://213.215.107.125/fotky/1786/21/v_17862148.jpg?v=2"), 
          new User("Id3",false,@"http://213.215.107.127/fotky/1546/53/15465356.jpg?v=2"), 
          new User("Id4",false,@"http://213.215.107.125/fotky/1811/29/18112909.jpg?v=1"),}; 
       return users; 
      } 
     } 
     public MainWindow() 
     { 
      InitializeComponent(); 
      this.DataContext = Users.GetUsers(); 
     } 
    } 
} 

Window.xaml код:

<Window x:Class="ListBoxStyle.MainWindow" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      Title="Pokec messanger" Height="400" Width="300"> 
     <Grid ShowGridLines="True"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="*"></ColumnDefinition> 
      </Grid.ColumnDefinitions> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="20"></RowDefinition> 
       <RowDefinition Height="*"></RowDefinition> 
       <RowDefinition Height="20"></RowDefinition> 
      </Grid.RowDefinitions> 
      <ListBox Name="friendList" ItemsSource="{Binding}" Grid.Column="0" Grid.Row="1" Style="{StaticResource friendListStyle}"/> 
     </Grid> 
    </Window> 

App.xaml код - ListBox стиль

<Application x:Class="ListBoxStyle.App" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      StartupUri="MainWindow.xaml"> 
    <Application.Resources> 
     <Style x:Key="friendListStyle" TargetType="{x:Type ListBox}"> 
      <Setter Property="ItemTemplate"> 
       <Setter.Value> 
        <DataTemplate> 
         <Grid Name="MainGrid" ShowGridLines="True"> 
          <Grid.ColumnDefinitions> 
           <ColumnDefinition Width="0.45*"></ColumnDefinition> 
           <ColumnDefinition Width="*"></ColumnDefinition> 
          </Grid.ColumnDefinitions> 
          <Grid.RowDefinitions> 
           <RowDefinition Height="60"></RowDefinition> 
          </Grid.RowDefinitions> 
          <Image Source="{Binding ImageUri}"/> 
          <Grid Name="SlaveGrid" ShowGridLines="true" Grid.Column="1"> 
           <Grid.ColumnDefinitions> 
            <ColumnDefinition Width="*"></ColumnDefinition> 
           </Grid.ColumnDefinitions> 
           <Grid.RowDefinitions> 
            <RowDefinition Height="Auto"></RowDefinition> 
            <RowDefinition Height="Auto"></RowDefinition> 
            <RowDefinition Height="Auto"></RowDefinition> 
           </Grid.RowDefinitions> 
           <TextBlock Name="tbId" Text="{Binding Id}" Grid.Column="0" Grid.Row="0" Margin`enter code here`="5,5,5,5" FontSize="14"></TextBlock> 
          </Grid> 
         </Grid> 
        </DataTemplate> 
       </Setter.Value> 
      </Setter> 
      <Style.Triggers> 
       <Trigger Property="IsMouseOver" Value="true"> 
        <Setter Property="FontSize" Value="20"/> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </Application.Resources> 
</Application> 

ответ

7

Вы можете изменить размер элемента, установив его RenderTransform или LayoutTransform. Триггер IsMouseOver - это то, что вам нужно, но это повлияет на весь список ListBox, который вы хотите использовать в DataTemplate или ItemContainerStyle.

<Style x:Key="friendListStyle" TargetType="{x:Type ListBox}"> 
    <Setter Property="ItemTemplate"> 
     <Setter.Value> 
      <DataTemplate> 
       <Grid Name="MainGrid" ShowGridLines="True"> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="0.45*"></ColumnDefinition> 
         <ColumnDefinition Width="*"></ColumnDefinition> 
        </Grid.ColumnDefinitions> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="60"></RowDefinition> 
        </Grid.RowDefinitions> 
        <Image Source="{Binding ImageUri}"/> 
        <Grid Name="SlaveGrid" ShowGridLines="true" Grid.Column="1"> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="*"></ColumnDefinition> 
         </Grid.ColumnDefinitions> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="Auto"></RowDefinition> 
          <RowDefinition Height="Auto"></RowDefinition> 
          <RowDefinition Height="Auto"></RowDefinition> 
         </Grid.RowDefinitions> 
         <TextBlock Name="tbId" Text="{Binding Id}" Grid.Column="0" Grid.Row="0" Margin="5,5,5,5" FontSize="14"></TextBlock> 
        </Grid> 
       </Grid> 
       <DataTemplate.Triggers> 
        <Trigger Property="IsMouseOver" Value="true"> 
         <Setter Property="LayoutTransform" TargetName="MainGrid"> 
          <Setter.Value> 
           <ScaleTransform ScaleX="1.5" ScaleY="1.5" /> 
          </Setter.Value> 
         </Setter> 
        </Trigger> 
       </DataTemplate.Triggers> 
      </DataTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
+0

Kris Большое спасибо, ваше продвижение было очень полезным. – Tom

+3

Если ответ решает вашу проблему, хороший способ сказать спасибо - отметить вопрос как ответ;) – Val

Смежные вопросы