Раскадровка для элемента DataTemplate в Silverlight - PullRequest
0 голосов
/ 13 сентября 2010

В моем приложении есть DataGrid, в котором есть столбец с определенным CellTemplate с текстовым блоком и кнопкой в ​​нем.

Я хочу показывать кнопку только при наведении этой конкретной ячейки. Как я могу достичь этого?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 14 сентября 2010

Вот решение, которое использует триггеры.

<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 голосов
/ 13 сентября 2010

Возможно, можно написать сценарий раскадровки, который ссылается на другие элементы шаблона, но я был бы слишком напуган, чтобы попробовать это таким образом:)

Если вы создадите содержимое ячейки как пользовательский контроль (с текстомокно и кнопка), анимационные раскадровки затем легко создаются для этого одного элемента управления и запускаются с помощью привязанного поведения ControlStoryboardAction (я могу вспомнить один за несколько минут, если вам нужен пример).

Свойства элемента управления для текстового поляи т. д. необходимо предоставлять значения и изменения (например, путем реализации их как свойств INotifyPropertyChanged или даже DependencyProperties), но затем вы можете просто привязать CellTemplate к дочернему элементу управления вместо TextBox.

Надеюсь, это поможет.

...