我正在使用MVVM将List<SelectItem>
绑定到ComboBox
。组合框具有正确的价值,看起来很好。但是,当我单击向下按钮查看组合框中的所有选项时,我会得到10个项目的列表,每个项目都会读取MyNamespace.SelectItem
。如果我选择#2,则组合框中的值将显示为2
。
以下是SelectItem
的代码:
public class SelectItem
{
public string Value { get; set; }
public string Display { get; set; }
}
我的XAML:
<ComboBox ItemsSource="{Binding Path=MyList}" DisplayMemberPath="Display" SelectedValue="{Binding Path=MyListValue, Mode=TwoWay}" />
这是我排队SelectItems
:
MyList= new List<SelectItem>();
for (int i = 1; i <= 10; i++)
{
var page = new SelectItem()
{
Display = i.ToString(),
Value = i.ToString()
};
MyList.Add(page);
if (i == 1)
MyListValue = page;
}
答案 0 :(得分:2)
检查是否有拼写错误。
使用以下代码:
public class SelectItem
{
public string Value { get; set; }
public string Display { get; set; }
}
public class SelectItemViewModel
{
public List<SelectItem> MyList { get; set; }
public SelectItem MyListValue { get; set; }
public SelectItemViewModel()
{
MyList = new List<SelectItem>();
for (int i = 1; i <= 10; i++)
{
var page = new SelectItem()
{
Display = i.ToString(),
Value = i.ToString()
};
MyList.Add(page);
if (i == 1)
MyListValue = page;
}
}
}
初始化:
public MainWindow()
{
DataContext = new SelectItemViewModel();
}
XAML:
<ComboBox HorizontalAlignment="Center"
VerticalAlignment="Center"
ItemsSource="{Binding Path=MyList}"
DisplayMemberPath="Display"
SelectedValue="{Binding Path=MyListValue, Mode=TwoWay}" />
我能够在ComboBox
中看到数字。没有类型名称。
答案 1 :(得分:0)
如果您在应用程序中使用主题并具有类似
的内容<ResourceDictionary Source="WhistlerBlue.xaml" />
在App.xaml中,尝试通过添加
覆盖组合框的项目样式<ComboBox.ItemContainerStyle>
<Style TargetType="ComboBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ComboBox.ItemContainerStyle>