如何将数据绑定到非静态类的静态属性?

时间:2011-03-03 21:30:52

标签: c# .net wpf data-binding

在我的ViewModel类中,我有一个静态属性AllSupport,但我无法弄清楚如何正确绑定它。 ListView已绑定到具有AllEffects静态属性的ObservableCollection 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>

AllEffectsObservableCollection的{​​{1}},其中有一个名为EffectViewModel的静态属性,其类型为: AllSupport其中:

Dictionary<HardwareType, List<EffectSupport>>是一个枚举,而且 HardwareType是一个具有名为EffectSupport的布尔属性的实例类。

我也试过这个,但后来抱怨它在IsSupported类上找不到IsSupported

ViewModel

任何想法,如何指定此绑定?

2 个答案:

答案 0 :(得分:2)

您可以使用x:Static该类是否为静态来访问静态成员。

未测试:

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

并且您需要prefix来访问您的视图模型的命名空间。

答案 1 :(得分:0)

这是我的情景:

  • 有一个非静态类,其静态属性是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