我阅读了许多关于将枚举绑定到组合框的方法。所以现在在 .Net 4.5 中应该非常容易。但是我的代码不起作用。不太明白为什么。
xaml:
<Window x:Class="SmartTrader.Windows.SyncOfflineDataWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="SyncOfflineDataWindow" Height="300" Width="300">
<Grid>
<StackPanel>
<ComboBox ItemsSource="{Binding StrategyTypes}" SelectedItem="{Binding StrategyType}" />
<Button Width="150" Margin="5" Padding="5" Click="Button_Click">Save</Button>
</StackPanel>
</Grid>
xaml.cs后端
namespace SmartTrader.Windows
{
/// <summary>
/// Interaction logic for SyncOfflineDataWindow.xaml
/// </summary>
public partial class SyncOfflineDataWindow : Window
{
public SyncOfflineDataWindow(IPosition position, ContractType type)
{
DataContext = new ObservablePosition(position);
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
}
}
}
视图模型:
namespace SmartTrader.Entity
{
public class ObservablePosition : NotifyPropertyChanged, IPosition
{
public IEnumerable<StrategyType> StrategyTypes =
Enum.GetValues(typeof (StrategyType)).Cast<StrategyType>();
public ObservablePosition(IPosition position)
{
Strategy = position.Strategy;
}
private StrategyType _strategyType = StrategyType.None;
public StrategyType Strategy
{
get { return _strategyType; }
set
{
_strategyType = value;
OnPropertyChanged();
}
}
}
}
StrategyType是一个枚举类型。但我得到的只是一个空的下拉列表
{Binding StrategyType}
- 应该是{Binding Strategy}
吗? - Jaanus VarusStrategy
。你是否添加了任何额外的内容? - Erik ThysellSelectedItem
,但这并不改变我无法绑定它的事实...?如果我理解正确,combobox 包含的是public IEnumerable<StrategyType> StrategyTypes
的结果 - 这里SelectedItem
的类型是什么?我猜它不是StrategyType
而是其他什么东西,是吗? - Erik Thysell