2010-12-13 57 views
1

我想讓列表框中的懸停項目增加其字體大小,以便在用戶瀏覽項目時獲得某種「滾動效果」。我不知道如何去做這件事。我的列表框看起來像這樣增加WPF列表框中的懸停元素的字體大小

<ListBox Name="ListBox" ItemsSource="{Binding MyList}" DisplayMemberPath="Property1"> 

感謝

回答

1

您應該能夠使用觸發器來做到這一點。像這樣的東西

<ListBox Name="ListBox" ItemsSource="{Binding MyList}" DisplayMemberPath="Property1"> 
    <ListBox.ItemContainerStyle> 
     <Style TargetType="ListBoxItem"> 
      <Style.Triggers> 
       <Trigger Property="IsMouseOver" Value="True"> 
        <Setter Property="TextBlock.FontSize" Value="18"/> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </ListBox.ItemContainerStyle> 
</ListBox> 
+0

謝謝,很好! – Alex 2010-12-14 08:39:28

0

Meleak的答案是如何去做你所問的。但是當你這樣做時,你會發現整個列表框是在你改變其中一個成員的字體大小的時候被佈置的,這可能是不可取的。你可以嘗試,而不是設置字體大小,將縮放變換:

<ListBox.ItemContainerStyle> 
    <Style TargetType="ListBoxItem"> 
     <Style.Triggers> 
      <Trigger Property="IsMouseOver" Value="True"> 
       <Setter Property="RenderTransform"> 
        <Setter.Value> 
        <ScaleTransform ScaleX="2" ScaleY="2"/> 
        </Setter.Value> 
       </Setter> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</ListBox.ItemContainerStyle> 

由於這是一個RenderTransform(而不是LayoutTransform),它不會影響列表框的佈局。還有其他問題(比如,你需要處理項目的背景,因爲它們在重疊時會重疊),但是值得嘗試。

+0

感謝您的建議!然而,我在使用這個時遇到了一些嚴重的重疊(像你提到的那樣) – Alex 2010-12-14 08:41:32

+0

是的,你可能會發現爲了使它工作得很好,你需要使模板中的頂層元素成爲一個帶有非透明'背景'。儘管有一個好處,那就是你也可以做一些事情,比如當鼠標懸停在項目上時,將BorderThickness設置爲非零。如果你玩這個,你可以得到一些非常好的效果。 – 2010-12-14 19:25:50

+0

我一定會那樣做的!再次感謝您的回答 – Alex 2010-12-14 20:59:13