我是一些应用程序,我想将一些文本框和chekcbox绑定到Dictionary(Enum,string)的值字段.这是可能的,我该怎么做?
在xaml代码中我有这样的东西 – 它用于字典,字符串作为键,但它无法正确绑定到枚举键
<dxe:TextEdit EditValue="{Binding Properties[PrimaryAddress],Mode=TwoWay}" /> <dxe:TextEdit EditValue="{Binding Properties[SecondaryAddress],Mode=TwoWay}" /> <dxe:CheckEdit EditValue="{Binding Properties[UsePrimaryAddress],Mode=TwoWay}" />
..这就是我在Enum中所拥有的
public enum MyEnum { PrimaryAddress,SecondaryAddress,UsePrimaryAddress }
在ViewModel字典中定义为:
public Dictionary<MyEnum,string> Properties
我找到了具有枚举值的combobox解决方案,但这不适用于我的情况.
有什么建议?
解决方法
您必须在绑定表达式中为索引器的参数设置适当的类型.
查看型号:
public enum Property { PrimaryAddress,UsePrimaryAddress } public class ViewModel { public ViewModel() { Properties = new Dictionary<Property,object> { { Property.PrimaryAddress,"123" },{ Property.SecondaryAddress,"456" },{ Property.UsePrimaryAddress,true } }; } public Dictionary<Property,object> Properties { get; private set; } }
XAML:
<Window x:Class="WpfApplication5.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:WpfApplication5" Title="MainWindow" Height="350" Width="525"> <Grid> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition/> <RowDefinition/> </Grid.RowDefinitions> <TextBox Grid.Row="0" Text="{Binding Path=Properties[(local:Property)PrimaryAddress]}"/> <TextBox Grid.Row="1" Text="{Binding Path=Properties[(local:Property)SecondaryAddress]}"/> <CheckBox Grid.Row="2" IsChecked="{Binding Path=Properties[(local:Property)UsePrimaryAddress]}"/> </Grid> </Window>
代码隐藏:
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); DataContext = new ViewModel(); } }
有关详细信息,请参阅“Binding Path Syntax”.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。