Nov*_*kov 4 c# wpf enums combobox mvvm
A已经阅读了很多关于将枚举绑定到组合框的方法.所以现在在.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>
Run Code Online (Sandbox Code Playgroud)
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)
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
查看型号:
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();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
StrategyType是枚举.我所有的都是空的下拉列表
您正试图绑定到私有变量,而您的枚举应该作为一个公开Property.
public IEnumerable<StrategyTypes> StrategyTypes
{
get
{
return Enum.GetValues(typeof(StrategyType)).Cast<StrategyType>();
}
}
Run Code Online (Sandbox Code Playgroud)
此外,Discosultan已经为您解决了另一个问题.
| 归档时间: |
|
| 查看次数: |
5761 次 |
| 最近记录: |