0

DataGridTemplateColumn行が選択されている場合にのみボタンを表示するにはどうすればよいですか? 私はこれを試しましたが、もちろん利用できるものはありIsSelectedません。行がバインドされているエンティティにプロパティを持つことは意味がありません。それでも、自分のモデルに自分のプロパティをそれほど緊密IsSelectedに結合する必要はありません。DataGridインターフェイスがこれ自体を処理できる方法はありますか?

これは私が持っているものです:

<sdk:DataGrid Name="_categorySummaryDataGrid" 
              MinHeight="200" 
              ItemsSource="{Binding ElementName=_userControl, Path=CategorySummaries}"
              AutoGenerateColumns="False" RowDetailsVisibilityMode="VisibleWhenSelected">
    <sdk:DataGrid.Columns>
        <sdk:DataGridTextColumn x:Name="_nameColumn" Binding="{Binding Path=Name}" Header="Name" Width="Auto" IsReadOnly="True" />
        <sdk:DataGridTextColumn x:Name="_descriptionColumn" Binding="{Binding Path=Description}" Header="Description" Width="*" IsReadOnly="True" />
        <sdk:DataGridTemplateColumn x:Name="_detailsColumn" Width="Auto">
            <sdk:DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Button Content="..." ToolTipService.ToolTip="View Category Details" 
                            Visibility="{Binding Path=IsSelected, Converter={StaticResource BooleanToVisibility}}"/>
                </DataTemplate>
            </sdk:DataGridTemplateColumn.CellTemplate>
        </sdk:DataGridTemplateColumn>
    </sdk:DataGrid.Columns>
</sdk:DataGrid>

設計上の理由から、ボタンを含む行が選択されたときにのみボタンが表示されるようにします。そして、可能であれば、行がホバーされているときに別の方法で表示したいと考えています。

Silverlight と WPF には、私が望んでいたより多くの制限があるようです。これらが可能になることを願っています。ありがとう。:)

編集:

私は Expression Blend を持っていませんし、取得する予定もありません。ありがとう、それだけです。

4

1 に答える 1

1

Silverlight で何かの外観を変更したい場合は常に、VisualStateManager の観点から考える必要があります。選択した DataGrid セルの外観を変更するには、VSM の驚異を利用する必要があります。DataGridColumn.CellStyle の「選択済み」状態を編集することにより、選択したグリッド セルの外観を変更できます。

  1. Blend で、新しい DataGrid を Page にドラッグ アンド ドロップします。
  2. DataGrid を右クリックし、[列の追加 --> DataGridTemplateColumn の追加] を選択します。
  3. [オブジェクトとタイムライン] ペインで DataGridTemplateColumn を右クリックし、[列スタイルの編集 --> CellStyle の編集 --> コピーの編集] に移動します。
  4. 「オブジェクトとタイムライン」ペインの「スタイル」を右クリックし、「テンプレートの編集 --> 現在の編集」に移動します。
  5. 次に、ボタンが消える問題を具体的に解決する方法について説明します。ボタンがその CellTemplate にある唯一のものである場合は、セルの内容全体を非表示にすることができます。
  6. [状態] ペインから [選択済み] 状態を選択します。
  7. CellStyle.Template の ContentPresenter の可視性を Collapsed に設定します。(より良い UX は、不透明度を 100% から 0% にする 0.3 秒のアニメーションを追加することです)。

基本的に、このチュートリアル全体は、DataGridColumn の CellStyle.Template を取得し、アニメーションを Selected State に追加することに関するものです。

于 2011-02-18T18:07:57.963 に答える