2010-09-13 71 views
0

我在我的應用程序中有一個DataGrid,它有一個帶有文本塊和一個按鈕的已定義CellTemplate的列。Silverlight中DataTemplate元素的故事板

我想僅在懸停此特定單元格時顯示按鈕。我怎樣才能做到這一點?

在此先感謝。

回答

0

這可能是可能是爲了腳本分鏡模板引用其他模板項目,但我會太驚恐如果創建單元格的內容爲用戶控件(與文本框來嘗試這種方式:)

和按鈕),那麼動畫故事板就可以輕鬆地爲那個控件創作,並通過附加的ControlStoryboardAction行爲運行(如果需要示例,我可以在幾分鐘內掀起一個控件)。

文本框等的控件屬性需要公開這兩個值和更改(例如通過將它們實現爲INotifyPropertyChanged屬性或甚至DependencyProperties),但是您可以簡單地將CellTemplate綁定到子控件而不是TextBox。

希望這會有所幫助。

+0

我認爲你是對的,我會用適當的故事板進行控制。 – Walkor 2010-09-15 07:26:12

0

這是一個使用觸發器的解決方案。

<DataGrid> 
    <DataGrid.Items> 
     <System:String>hello</System:String> 
     <System:String>world</System:String> 
    </DataGrid.Items> 

    <DataGrid.Columns> 
     <DataGridTemplateColumn> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <Grid x:Name="MyGrid" Background="Transparent"> 
         <StackPanel> 
          <TextBlock Text="{Binding}"/> 
          <Button x:Name="MyButton" Visibility="Hidden" Content="{Binding}"/> 
         </StackPanel> 
        </Grid> 

        <DataTemplate.Triggers> 
         <Trigger Property="IsMouseOver" Value="True" SourceName="MyGrid"> 
          <Trigger.Setters> 
           <Setter TargetName="MyButton" Property="Visibility" Value="Visible"/> 
          </Trigger.Setters> 
         </Trigger> 
        </DataTemplate.Triggers> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
    </DataGrid.Columns> 
</DataGrid> 
+0

觸發器在Silverlight中不存在。 – Walkor 2010-09-15 07:25:36