2010-09-20 3 views
2

Я хочу передать в качестве параметра метода GetValues ​​из MyItemSourceProvider конкретное значение MyEnum. Как написать это, пожалуйста?Значение перечисления WPF как параметр метода ObjectDataProvider

<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> 

и в этой связи, а также:

http://wpfgrid.blogspot.com/2013/01/v-behaviorurldefaultvmlo_10.html