Как связать статическое свойство в другом классе с GridViewColumn WPF ListView? - PullRequest
2 голосов
/ 03 марта 2011

Во-первых, я использую это для самого элемента управления ListView:

ItemsSource="{Binding AllEffects}"

, где 3 GridViewColumns уже привязано к AllEffects.

Но у меня есть еще 2 GridViewColumnsчто я хочу привязать к отдельному статическому свойству, найденному в:

public static class AllSupport
{
    public static EffectSupportLookup<HardwareType, List<EffectSupport>>
}

public class EffectSupport
{
    public bool IsSupported {get;set;}
}

Я пробовал это:

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

Но во время выполнения жалуется, что нет свойства с именем AllSupport по AllEffects.Я не хочу хранить его внутри AllEffects, потому что это отдельный класс, уже совместимый с пользовательским интерфейсом, поэтому я просто хочу связать его с:

AllSupport.EffectSupport[GPU].IsSupported

Есть идеи?

Ответы [ 2 ]

4 голосов
/ 03 марта 2011

Использование x:Static Расширение разметки.

Что-то вроде (никогда не проверялось):

<Window xmlns:local="AssemblyName">
  <ItemsControl 
    ItemsSource="{Binding Source={x:Static local:AllSupport.EffectSupport}}" />
</Window>

Или через CollectionViewSource.

Обновление :

  1. Необходимо указать внутренний путь
  2. Вы уверены, что local xmlns указывает на правую точкуnamespace (обратитесь за помощью к VS Xaml Intellisense)
  3. Скомпилируется ли ваше приложение перед установкой его в xaml?
  4. Будьте более конкретны с имплементацией обобщенного класса, чего вы пытаетесь достичь?это словарь?универсальный класс?Пожалуйста, еще раз измените свой код, чтобы дать нам правильный взгляд на ваш сценарий.
2 голосов
/ 03 марта 2011

У меня есть еще 2 GridViewColumns, которые я хочу привязать к отдельному статическому свойству

Я не думаю, что вы можете сделать это, 1 ItemsSource означает 1 SourceCollection.

Но вы можете легко использовать LINQ для создания специальной коллекции, включающей эти 2 столбца

Я не хочу хранить его внутри AllEffects, потому что это отдельный класс, уже совместимый с пользовательским интерфейсом,

Если это означает, что это класс ViewModel, и если вы хотите, чтобы эти столбцы были в представлении, то это очень веская причина, по которой они должны храниться в этом классе. Или в отдельном производном ViewModel.

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