2012-11-13 52 views
3

我有一個綁定到GridView的項目列表。該列表包含多種類型的數據。我使用ItemTemplateSelector將DataTemplate應用於不同的數據類型,以使它們每個都具有獨特的外觀和感覺。WinRT:如何將鼠標懸停在特定GridIViewtem的影響上?

我不知道如何去除DataTemplate中沒有DataTriggers的SubClass1的GridViewItem的懸停效果。

public class Base 
{ 
    public string Name {get;set;} 
} 
public class SubClass1 : Base 
{ 
} 
public class SubClass2 : Base 
{ 
} 
public PageViewModel : ViewModelBase 
{ 
    public List<Base> ListOfBases {get;set;} 
} 


     <GridView 
     x:Name="baseGridView" 
     ItemsSource="{Binding ListOfBases}" 
     ItemTemplateSelector="{StaticResource itemsTemplateSelector}" 
     SelectionMode="Multiple" 
     IsSwipeEnabled="false" 
     IsItemClickEnabled="True" 
     > 

     <DataTemplate x:Key="SubClass1Template"> 
      <Grid Margin="0" Width="346" VerticalAlignment="Stretch" > 
       <TextBlock Grid.Column="0" Text="{Binding Name}" /> 
      </Grid> 
     </DataTemplate> 

回答

4

您將需要編輯GridViewItem的VisualState樣式。爲此,請在VisualStudio或Blend中的GridView上單擊鼠標右鍵。在設計視圖或文檔大綱內執行此操作。選擇編輯附加模板 - >編輯生成的項容器(ItemContainerStyle) - >編輯複製

如果你想徹底刪除,則刪除PointerOver狀態中的元素

<VisualState x:Name="PointerOver"/> 

你可以用它來也對其進行更改。也許你不喜歡默認的懸停顏色,但是像另一個顏色一樣,這裏是你要做這些改變的地方。

UPDATE基於評論

要只對某一類的hover樣式,設置用於hover樣式(如:邊框)的控件的可見性,以直接綁定到類。然後ValueConverter會根據類的類型返回Visible或Collapsed

+0

不幸的是,這並不能解決我的問題。我只想爲特定的項目子集刪除PointerOver,而不是全部。 –

+0

查看我的更新信息 –

+0

謝謝肖恩。你的建議將解決問題。我希望有一種方法可以使用我還沒有發現的DataTemplate或Style。我會把這個話題留出一段時間,看看有人有另一種解決方案,否則我會接受你的。 –

相關問題