Значение перечисления WPF как параметр метода ObjectDataProvider - PullRequest
2 голосов
/ 20 сентября 2010

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

<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, ...}

Ответы [ 3 ]

2 голосов
/ 10 октября 2011

Вы можете реализовать это следующим образом:

<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, ...}
1 голос
/ 20 сентября 2010

Попробуйте это:

<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>
0 голосов
/ 11 января 2013

Возможно, вы уже нашли ответ. Если нет, то вы можете посмотреть здесь -

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

...