2

こんにちは、WPF アプリケーションでテレリック GridViewを使用しています。そのグリッドには、Number 、 Max、およびMinのような 3 つの列があります。ここで、選択した行の数値列に値を指定するときに、最小セルと最大セルを無効にする必要があります。

MaxCellMinCellのような 2 つの変数を GridViewCellBase として宣言しました。The Query (MaxCell と MinCell の取得については後述) が null 値を返す場合、IsEnabledFalseとして指定することはできません。値を受け入れません。その与えるNull 参照 Exception。どうすればこの問題を解決できますか? この問題の解決策を教えてください。前もって感謝します。

       foreach (GridViewCell cell in row.Cells)
         {
             if (cell.Column.Header.ToString() == "Number" && Convert.ToInt32  (cell.Value) > 0)
             {
                 GridViewCellBase MaxCell = new GridViewCellBase();
                 GridViewCellBase MinCell=new GridViewCellBase();
                 MaxCell=(from c in row.Cells
                                    where c.Column.Name == "Max"
                                    select c).FirstOrDefault();
                 MinCell =(from c in row.Cells
                                     where c.Column.Name == "Min"
                                     select c).FirstOrDefault();

                 MaxCell.IsEnabled = false;// Here I am getting the null reference  exception when MaxCell and MinCell having empty values


                 MinCell.IsEnabled = false; 
                 break;
             }


         }

MaxCellは常に空の値のみを返します。だから私はIsEnabledプロパティを与えることができません。今私の疑問は、MaxCell 値が常に空または null 値になるのはなぜですか? セルには"Max""Min"のような列があります。次に、実際のセルを返す必要がありますが、常に null 値を返すのはなぜですか?

4

1 に答える 1

1

あなたが説明したアプローチを使用する代わりに。特定の列のセル スタイルを変更して、適切な値を返すコンバーターを使用して IsEnabled プロパティにバインドを作成します。

<Style x:Key="MinMaxCellStyle" TargetType="{x:Type GridView:GridViewCell}">                        
      <Setter Property="IsEnabled" Value="{Binding Normal, Converter{StaticResources NormalToEnabledConverter}" />
</Style>

次に、このスタイルを特定の列に適用します。

<GridView:GridViewDataColumn CellStyle="{StaticResource MinMaxCellStyle}" />

これが気に入らない場合は、いつでもトリガーを使用できます。

于 2012-04-18T13:47:06.430 に答える