0

Silverlight アプリのデータグリッドのコードを PFB します。他の列の値 DatatypeName に基づいて、各行の列 AttributeValue を検証する必要があります。 、ユーザーが int 以外を入力すると、セルは検証例外をスローする必要があります。助けてください

<sdk:DataGrid Margin="0,0,0,50" Grid.Row="1" Grid.Column="0" RowStyle="{StaticResource DataGridRowStyle1}"  Style="{StaticResource DataGridStyle1}" IsReadOnly="True" Foreground="{StaticResource GrayBrush}" HorizontalScrollBarVisibility="Hidden" Name="dgKpiAttributes" MinHeight="5" VerticalAlignment="Stretch" FontSize="13.333" FontFamily="Segoe UI"  AutoGenerateColumns="False" GridLinesVisibility="None" >
                                                    <sdk:DataGrid.Columns>
                                                        <sdk:DataGridTemplateColumn Header=" " >
                                                            <sdk:DataGridTemplateColumn.CellTemplate>
                                                                <DataTemplate>
                                                                    <CheckBox x:Name="chkSelect" 
                                      VerticalAlignment="Center" IsChecked="False"  HorizontalAlignment="Center" HorizontalContentAlignment="Center"/>


                                                                </DataTemplate>
                                                            </sdk:DataGridTemplateColumn.CellTemplate>
                                                        </sdk:DataGridTemplateColumn>
                                                        <sdk:DataGridTemplateColumn Header="AttributeName" SortMemberPath="AttributeName" Width="50*" >
                                                            <sdk:DataGridTemplateColumn.CellTemplate>
                                                                <DataTemplate>
                                                                    <StackPanel VerticalAlignment="Center">
                                                                        <TextBlock x:Name="txtAttributeName" TextWrapping="Wrap" Padding="4" Text="{Binding AttributeName}" HorizontalAlignment="Center" VerticalAlignment="Center" />
                                                                    </StackPanel>
                                                                </DataTemplate>
                                                            </sdk:DataGridTemplateColumn.CellTemplate>
                                                        </sdk:DataGridTemplateColumn>
                                                        <sdk:DataGridTemplateColumn Header="AttributeValue" SortMemberPath="AttributeValue" Width="80*" >
                                                            <sdk:DataGridTemplateColumn.CellTemplate>
                                                                <DataTemplate>
                                                                    <StackPanel VerticalAlignment="Center">
                                                                        <TextBox x:Name="AttributeValue"  Margin="0,0,10,0" HorizontalAlignment="Stretch" Text="{Binding AttributeValue}"  TextWrapping="Wrap" />
                                                                    </StackPanel>
                                                                </DataTemplate>
                                                            </sdk:DataGridTemplateColumn.CellTemplate>
                                                        </sdk:DataGridTemplateColumn>
                                                        <sdk:DataGridTemplateColumn Header="DataType" SortMemberPath="DataTypeName" Width="50*">
                                                            <sdk:DataGridTemplateColumn.CellTemplate>
                                                                <DataTemplate>
                                                                    <StackPanel VerticalAlignment="Center">

                                                                        <TextBox x:Name="DatatypeName"  HorizontalAlignment="Stretch"  TextWrapping="Wrap" IsEnabled="False"  Text="{Binding DataTypeName}" />
                                                                    </StackPanel>
                                                                </DataTemplate>
                                                            </sdk:DataGridTemplateColumn.CellTemplate>
                                                        </sdk:DataGridTemplateColumn>
                                                    </sdk:DataGrid.Columns>

                                                </sdk:DataGrid>
4

1 に答える 1

0

さて、あなたのコードから、あなたのクラスが次のようになっていることがわかります(間違っている場合は修正してください):

class MyClass
{
      public string AttributeName {get;set;}
      public string AttributeValue {get;set;}
      public string DatatypeName {get;set;}
}

Silverligth では、データグリッドの同じ行にある別のセルをチェックする方法があると思いますが、バインディングを使用しているため、その必要はありません。データ オブジェクトで直接作業できます。

class MyClass
{
      public string AttributeName {get;set;}

      public string DatatypeName {get;set;}

      private string _AttributeValue;
      public string AttributeValue {
             get{
                  return _AttributeValue;  
             }
             set{
                  if (validate(DatatypeName,value)){
                    //Do something if validation is a success  
                    _AttributeValue = value;
                  }
                  else{
                     //Do something if validation fails
                  }
              }
          }

      bool validate(string typename,string value){
        //do your validation, return true or false
        return true
      }


}

この方法では、UI をトラバースする必要はなく、データのみを扱う必要があります。

于 2013-08-20T15:50:32.327 に答える