私は C++ 開発者で、WPF の作業を始めたばかりです。MVVMに続いて、アイテムを追加する必要があるコンボボックスに取り組んでいます。アイテムを追加するのは非常に簡単に思えますが、何をすべきかを理解できないという単純な問題に遭遇しました。コードは次のとおりです。
XAML:
<ComboBox Grid.Row="0" ItemsSource="{Binding DaughterBoardBoxList}" SelectedItem="{Binding SelectedDaughterBoardBoxList, Mode=TwoWay}" SelectedIndex="0" />
<ComboBox Grid.Row="1" ItemsSource="{Binding DaughterVersionBoxList}" SelectedItem="{Binding SelectedDaughterVersionBoxList, Mode=TwoWay}" SelectedIndex="0" />
<ComboBox Grid.Row="2" ItemsSource="{Binding DaughterSerialBoxList}" SelectedItem="{Binding SelectedDaughterSerialBoxList, Mode=TwoWay}" SelectedIndex="0" />
ViewModel クラス:
public ObservableCollection<string> DaughterBoardBoxList
{
get { return _DBoardBoxList; }
set
{
_DBoardBoxList = value;
OnPropertyChanged("DaughterBoardBoxList");
}
}
public string _SelectedDBoardBoxList;
public string SelectedDaughterBoardBoxList
{
get { return _SelectedDBoardBoxList; }
set
{
_SelectedDBoardBoxList = value;
OnPropertyChanged("SelectedDaughterBoardBoxList");
}
}
// Similarly for other 2 comboboxes
次のように、各コンボボックスにアイテムを追加しました。
- DaughterBoardBoxItems = "S1010013"、"S1010014"、"S1010015" など
- DaughterVersionBoxItems = "001A"、"001B"、"001C" など
- DaughterSerialBoxItems = 1 ~ 499
次のように 1 ~ 499 を追加しました。
for (int j = 1; j < 500; j++)
{
_DSerialBoxList.Add(j.ToString());
}
いくつかの操作を実行すると、次のようないくつかのステートメントを実行する必要があります。
String daughterBoard = "S1010015001A0477"; // Hardcoded value for check
String boardName = daughterBoard.Substring(0, 8);
DaughterBoardBoxList = boardName;
String version = daughterBoard.Substring(8, 12);
DaughterVersionBoxList = version;
int serialvalue = Convert.ToInt32(daughterBoard.Substring(12, 16));
String serialNo = Convert.ToString(serialvalue);
DaughterSerialBoxList = serialNo;
longlabel += daughterBoard;
上記のコードを実行すると、次のように例外がスローさString version = daughterBoard.Substring(8, 12);
れますArgumentoutofrange. Index and length must refer to a location within the string.
要件:
ここで、例外に直面することなく
boardName
、version
およびコンボボックスにある値をどのように設定するのか混乱しています。serialNo
コンボボックスに settext プロパティがあるとは思いません。これを達成するための他の代替ソリューションはありますか?0 から 499 までの値を入力しても、4 桁の値として表示されるはずです。つまり、77 を追加すると、0077 として表示されるはずです。上記のコードで述べたように。
助けてください :)