Привязать enum из внешнего класса в том же пространстве имен к ListBox (или какому-либо другому) в WPF (C # и XAML) - PullRequest
0 голосов
/ 23 июня 2011

Я посмотрел и посмотрел, но ничего не работает.

Скажи, что у меня есть что-то вроде этого:

namespace A{

    partial class B : Window {
        //some definitions
    }

    class E {
        public enum en {a, b, c}
    }
}

и затем в XAML:

<Window x:Class="A.B"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:A">
<Window.Resources>
        <ObjectDataProvider MethodName="GetValues"
                        ObjectType="{x:Type sys:Enum}"
                        x:Key="vals">
            <ObjectDataProvider.MethodParameters>
                <x:Type TypeName="en" />           <<<this line
            </ObjectDataProvider.MethodParameters>
        </ObjectDataProvider>
    </Window.Resources>
..rest of XAML ...
</window>

Теперь отмеченная строка дает мне ошибку:

* * 1010

то же самое, если я изменю его на

local:en
E+en
local:E+en

Как мне решить эту проблему? Большое спасибо

1 Ответ

1 голос
/ 23 июня 2011

просто попробуйте это

<Window x:Class="WpfApplication12.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication12"
    xmlns:System="clr-namespace:System;assembly=mscorlib"
Title="Window1" Height="300" Width="300">
<Window.Resources>
    <ObjectDataProvider x:Key="dataFromEnum"
                        MethodName="GetValues"
                        ObjectType="{x:Type System:Enum}">
        <ObjectDataProvider.MethodParameters>
            <x:Type TypeName="local:Window1+en" />
        </ObjectDataProvider.MethodParameters>
    </ObjectDataProvider>
</Window.Resources>
<Grid>
    <ListView ItemsSource="{Binding Source={StaticResource dataFromEnum}}"
              Margin="10,10,10,0"
              Height="80"
              VerticalAlignment="Top" />
    <ComboBox ItemsSource="{Binding Source={StaticResource dataFromEnum}}"
              Margin="10,0,10,80"
              Height="25"
              VerticalAlignment="Bottom" />
    <ListBox ItemsSource="{Binding Source={StaticResource dataFromEnum}}"
              Margin="10,0,10,12"
              Height="93"
              VerticalAlignment="Bottom" />
</Grid>

public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();
    }
    public enum en { a, b, c }

}
...