2010-09-20 56 views
2

我想從MyItem的MyEnum的具體值傳遞給MyItemSourceProvider的GetValues方法的參數。請問如何寫?作爲ObjectDataProvider的方法參數的WPF枚舉值

<ObjectDataProvider MethodName="GetValues" ObjectType="{x:Type local:MyItemSourceProvider}"> 
    <ObjectDataProvider.MethodParameters> 
     <!-- ENUM value (e.g. MyEnum.Record1) -->  
    </ObjectDataProvider.MethodParameters>   
</ObjectDataProvider> 

方法:

public System.Collections.IEnumerable GetValues(MyEnum key) {} 
public enum MyEnum {Record1, ...} 

回答

1

試試這個:

<Window.Resources>  
    <local:MyEnum x:Key="valueToPassIn">Record1</local:MyEnum> 
    <x:Type x:Key="typeToPassIn" TypeName="local:MyEnum" />  

    <ObjectDataProvider MethodName="GetValues"   
     ObjectType="{x:Type sys:Enum}"   
     x:Key="ExampleEnumValues" 
     MethodParameters="{StaticResource valueToPassIn}">   
    </ObjectDataProvider> 
</Window.Resources> 
2

你能完成這項計劃如下:

<ObjectDataProvider MethodName="GetValues" 
        ObjectType="{x:Type local:MyItemSourceProvider}" 
        x:Key="getValues"> 
    <ObjectDataProvider.MethodParameters> 
     <local:MyEnum>Record1</local:MyEnum> 
    </ObjectDataProvider.MethodParameters> 
</ObjectDataProvider> 

,或者您也可以做到這樣:

<ObjectDataProvider MethodName="GetValues" 
        ObjectType="{x:Type local:MyItemSourceProvider}" 
        x:Key="getValues"> 
    <ObjectDataProvider.MethodParameters> 
     <x:Static Member="local:MyEnum.Record1" /> 
    </ObjectDataProvider.MethodParameters> 
</ObjectDataProvider> 

有:

public enum MyEnum {Record1, Record2, ...} 
0

您可能已經發現了答案。如果沒有,你可以看看這裏 -

http://msdn.microsoft.com/en-us/library/bb613576.aspx

或者

<Window x:Class="SimpleXmlDataSourceExample.MainWindow2" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:Sys="clr-namespace:System;assembly=mscorlib" 
    xmlns:local="clr-namespace:SimpleXmlDataSourceExample" 
    Title="MainWindow2" Height="300" Width="403"> 
<Window.Resources> 
    <ObjectDataProvider x:Key="deptEnumSource" ObjectType="{x:Type Sys:Enum}" MethodName="GetValues" > 
     <ObjectDataProvider.MethodParameters> 
      <x:Type TypeName="local:DeptEnum"></x:Type> 
     </ObjectDataProvider.MethodParameters> 
    </ObjectDataProvider> 
</Window.Resources> 
<Grid> 
    <ComboBox Height="23" HorizontalAlignment="Left" Margin="69,68,0,0" Name="comboBox1" 
       VerticalAlignment="Top" 
       Width="156" 
       ItemsSource="{Binding Source={StaticResource deptEnumSource}}" 
       > 
    </ComboBox> 
</Grid> 

,並在這個環節還有:

​​