2012-10-02 53 views
5

我是一些應用程序,我想綁定一些文本框和chekcboxes字典(枚舉,字符串)的值字段。這是可能的,我該怎麼做?綁定到值爲字典與枚舉作爲鍵

在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}" /> 

..這裏是我的枚舉

public enum MyEnum 
{ 
    PrimaryAddress, 
    SecondaryAddress, 
    UsePrimaryAddress 
} 

在視圖模型字典的定義爲:

public Dictionary<MyEnum, string> Properties 

我發現SOLUT離子組合框與枚舉值,但這並不適用於我的情況。

有什麼建議嗎?

回答

9

您必須爲綁定表達式中的索引器參數設置適當的類型。

視圖模型:

public enum Property 
{ 
    PrimaryAddress, 
    SecondaryAddress, 
    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」。

+0

使用上面的綁定路徑我得到以下錯誤:System.Windows.Data錯誤:40:BindingExpression路徑錯誤:'[]'對象'''字典'2'(HashCode = 56465364)'找不到''''屬性。 BindingExpression:路徑=屬性[(mbpt:MyEnum)UsePrimaryAddress]; DataItem ='MyUserControlViewModel'(HashCode = 21018822);目標元素是'CheckEdit'(Name ='');目標屬性是'EditValue'(輸入'Object') – user1714232

+0

呃,沒關係。我在綁定路徑上犯了一些錯誤。你的解決方案正在工作。謝謝 :) – user1714232