Как привязать данные к статическому свойству в нестатическом классе? - PullRequest
2 голосов
/ 04 марта 2011

В моем классе ViewModel есть статическое свойство AllSupport, но я не могу понять, как его правильно связать.ListView уже привязан к ObservableCollection AllEffects со статическим свойством AllSupport.

Я использовал это:

<GridViewColumn
    Width="Auto"
    Header="GPU">
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <CheckBox
                Margin="0"
                HorizontalAlignment="Center"
                IsChecked="{Binding AllSupport[HardwareType].SupportList.IsSupported, Mode=TwoWay}"/>
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>

AllEffects равно ObservableCollection из EffectViewModelгде оно имеет статическое свойство с именем AllSupport, которое имеет тип: Dictionary<HardwareType, List<EffectSupport>>, где:

HardwareType - это перечисление, а EffectSupport - это экземпляр класса, который имеет логическое свойство с именем IsSupported.

Я тоже пробовал это, но потом жалуется, что не может найти IsSupported в классе ViewModel:

IsChecked="{Binding AllSupport[HardwareType].SupportList, Path=IsSupported

Есть идеи, как задать эту привязку?

Ответы [ 2 ]

2 голосов
/ 04 марта 2011

Вы можете использовать x:Static независимо от того, является ли класс статическим или нет для доступа к статическим членам.

Не проверено:

IsChecked="{Binding [HardwareType], Source={x:Static prefix:EffectViewModel.AllSupport}}"

, и вам потребуется prefix для доступа к вашемупросмотреть пространство имен модели.

0 голосов
/ 18 сентября 2015

Это был мой сценарий:

  • Имел нестатический класс со статическим свойством, которое было ObservableCollection
  • Класс использовался как регистратор и для сбора определенных исключений из программы

Постановка задачи:

  • Как связать статический член нестатического класса с представлением списка в XAML

Мое решение:

Код позади (Window.cs):

public ObservableCollection<T> FooList {get {return    FooLogger.ExceptionList;}}
 //where FooLogger is a non-static class
 //and   ExceptionList is a static ObservableCollection<T>

DataContext (Window.cs):

this.DataContext=this;

XAML (Window.xaml)

<ListView ItemsSource="{Binding FooList}">
                    <ListView.View>
                        <GridView>
                            <GridViewColumn Width="Auto" Header="Name" DisplayMemberBinding="{Binding Name}" />

Ура, v0k

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...