C# 无法在WPF中使用字符串变量存储combobox项 我是C++开发人员,刚刚开始工作WPF。在MVVM之后,我正在处理组合框,我必须在其中添加项目。在其中添加项目似乎很容易,但我遇到了一个简单的问题,我不知道该怎么做。代码如下:
XAML:C# 无法在WPF中使用字符串变量存储combobox项 我是C++开发人员,刚刚开始工作WPF。在MVVM之后,我正在处理组合框,我必须在其中添加项目。在其中添加项目似乎很容易,但我遇到了一个简单的问题,我不知道该怎么做。代码如下:,c#,.net,wpf,mvvm,combobox,C#,.net,Wpf,Mvvm,Combobox,XAML: <ComboBox Grid.Row="0" ItemsSource="{Binding DaughterBoardBoxList}" SelectedItem="{Binding SelectedDaughterBoardBoxList, Mode=TwoWay}" SelectedIndex="0" /> <ComboBox Grid.Row="1" ItemsSource="{Binding DaughterVersionBoxList}" SelectedI
<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" />
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
当我执行上述代码时,它在String version=daughterBoard.Substring(8,12)处抛出异常代码>作为Argumentoutofrange。索引和长度必须引用字符串中的位置。
要求:
- 现在,我感到困惑的是如何设置组合框中的
boardName
、version
和serialNo
中的值,而不必面对任何异常。我认为combobox没有settext属性。它们是否是实现这一目标的另一种替代方案
- 即使我输入0到499之间的值,它也应该显示为4位数字的值,即如果加上77,它应该显示为0077。正如我在上面的代码中提到的
请帮助:)首先,异常即将出现,因为您正在跳出字符串边界
String version=daughterBoard.Substring(8,4)
…就是你要找的,8号之后没有12个字符了。第二个参数是从第一个参数开始所需的长度,而不是起点
然后检查字符串是否在列表中
if (DaughterVersionBoxList.Contains(version))
{
SelectedDaughterVersionBoxList = version;
}
for (int j = 1; j < 500; j++)
{
_DSerialBoxList.Add(j.ToString("D4"));
}
设置SelectedDaughtServersOnBoxList将其应用于组合框
双向绑定(正如您对所选项所做的那样)是设置列表框的所选项的最佳方式
有几种方法可以格式化要显示的文本。有时可以在xaml中使用该属性。另一种是使用一个
在您的情况下,快捷方式是在填充列表时格式化字符串
if (DaughterVersionBoxList.Contains(version))
{
SelectedDaughterVersionBoxList = version;
}
for (int j = 1; j < 500; j++)
{
_DSerialBoxList.Add(j.ToString("D4"));
}
for(int j=1;j<500;j++)
{
_添加(j.ToString(“D4”);
}
这将确保您的组合框中始终有4位数字。寻找更多关于它的信息。如果情况要求您实际将列表项作为数值进行处理,那么最好将ObservableCollection转换为ObservableCollection,并使用我前面提到的转换器。首先,由于您正在跳出字符串边界,所以会出现异常
String version=daughterBoard.Substring(8,4)
…就是你要找的,8号之后没有12个字符了。第二个参数是从第一个参数开始所需的长度,而不是起点
然后检查字符串是否在列表中
if (DaughterVersionBoxList.Contains(version))
{
SelectedDaughterVersionBoxList = version;
}
for (int j = 1; j < 500; j++)
{
_DSerialBoxList.Add(j.ToString("D4"));
}
设置SelectedDaughtServersOnBoxList将其应用于组合框
双向绑定(正如您对所选项所做的那样)是设置列表框的所选项的最佳方式
有几种方法可以格式化要显示的文本。有时可以在xaml中使用该属性。另一种是使用一个
在您的情况下,快捷方式是在填充列表时格式化字符串
if (DaughterVersionBoxList.Contains(version))
{
SelectedDaughterVersionBoxList = version;
}
for (int j = 1; j < 500; j++)
{
_DSerialBoxList.Add(j.ToString("D4"));
}
for(int j=1;j<500;j++)
{
_添加(j.ToString(“D4”);
}
这将确保您的组合框中始终有4位数字。寻找更多关于它的信息。如果情况要求您实际将列表项作为数值进行处理,那么您最好将ObservableCollection转换为ObservableCollection,并使用我前面提到的转换器。即使我将适当的语法设置为:String version=daughterBoard.Substring(8,4)
它抛出一个错误,无法将字符串转换为observablecollection
,因为我的组合框是string类型。如果您注意到boardName
中存在值,version
和serialNo
与组合框开头的项目类似。我假设您的绑定工作正常,并且对象实际上在您的组合框中。如果是,则应设置“SelectedDaughtServersOnboxList=version;”好吧,这就像一个符咒:)现在如何格式化组合框中的项目?我说的是我的第二个查询:)这是我如何完成填充的:\u DSerialBoxList.Add(j.ToString().PadLeft(4,'0')代码>:)很好,尽管我将适当的语法设置为:String version=daughterBoard.Substring(8,4)
它抛出一个错误,无法将字符串转换为observablecollection
,因为我的组合框是string类型。如果您注意到boardName
中存在值,version
和serialNo
与组合框开头的项目类似。我假设您的绑定工作正常,并且对象实际上在您的组合框中。如果是,则应设置“SelectedDaughtServersOnboxList=version;”好吧,这就像一个符咒:)现在如何格式化组合框中的项目?我说的是我的第二个查询:)这是我如何完成填充的:\u DSerialBoxList.Add(j.ToString().PadLeft(4,'0')代码>:)