0

Silverlight ビジネス アプリケーションに取り組んでいます。ここでは、Silverlight 子ウィンドウにデータグリッドを設定しています。今私が直面している問題は、データグリッドに 4 つの列があることですが、そのうちの 1 つの列だけを編集可能にし、残りの 3 つを読み取り専用のままにする必要があります。

どうすればそれを達成できますか。データグリッド全体を編集可能にすることはできますが、特定の列を 1 つにすることはできません。列は現在自動生成されていることに注意してください。

助けてくれてありがとう。

4

2 に答える 2

0

XAMLを変更したくない場合は、オブジェクトのプロパティにEditable属性を追加できます。

于 2012-06-13T19:38:59.960 に答える
0

列の名前を事前に定義すると、これははるかに簡単になり、xaml コードのみが必要になります。

<data:Datagrid x:Name="Grid11" AutoGenerateColumns="False" ColumnWidth="*" SelectionMode="Single" >
            <data:DataGrid.Columns>
                <data:DataGridTextColumn Header="Index" IsReadOnly="True" Binding="{Binding LocalIndex}" />
                <data:DataGridTextColumn Header="ID" IsReadOnly="True" Binding="{Binding Id}" />
                <data:DataGridTextColumn Header="Name" Binding="{Binding Name, ValidatesOnNotifyDataErrors=True, NotifyOnValidationError=True, Mode=TwoWay}"  >
            </data:DataGrid.Columns>
</data:SolacomDatagrid>

上記のサンプルでは、​​name 列は編集可能ですが、他の 2 列は読み取り専用です。私はバインディングを使用しているので、コード ビハインドでは、バインドされている属性を置き換えるだけで何も変更する必要がないことに注意してください。

編集

                foreach (DataGridColumn item in DataGrid.Columns)
                {
                       //if(column name condition of column id)
                    item.IsReadOnly = true;
                }

このループにより、すべての列を読み取り専用に設定できるはずです。個人的には、このイベントを DataGrid Loaded イベントで実行したいと思います。これが早すぎると列がまだ存在しないためです。

お役に立てれば、

于 2012-06-13T19:23:51.670 に答える