2011-03-03 48 views
0

首先我用這對ListView控件本身:如何將每個GridViewColumn綁定到單獨的ObservableCollection?

ItemsSource="{Binding AllEffects}" 

所以這樣豈不讓每GridViewColumn個人綁定?

除了AllEffects我還有其他2 ObservableCollection我要綁定到其他2 GridViewColumn

public ObservableCollection<GPUSupportNode> GPUSupport { get; set; } 
public ObservableCollection<CPUSupportNode> CPUSupport { get; set; } 

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

我想分別掛鉤這2 GridViewColumnsGPUSupport/CPUSupport.IsSupported

現在我有:

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

但它不工作。這可能嗎?

回答

3

你可以嘗試創建一個ViewModel類這樣

public class MyViewModel 
{ 

public ObservableCollection<GPUSupportNode> GPUSupport { get; set; } 
public ObservableCollection<CPUSupportNode> CPUSupport { get; set; } 
public ObservableCollection<TypeOfEffects> AllEffects{ get; set; } 

} 

,並創建MyViewModel的一個實例,說視圖模型,並把它初始化爲您的觀察集合。 Set ItemsSource

ItemsSource="{Binding ViewModel}" 

然後這應該工作。

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

謝謝,但這是唯一的方法?這似乎是一個試圖結合所有ObservableCollections的黑客。 – 2011-03-03 01:17:02

+0

MVVM是一種標準模式,用於在WPF中啓用數據綁定scenerios,並將視圖代碼從模型中解耦。它提供了一種簡單的方法來測試一直到您的GUI,而無需GUI。以下是來自SO貢獻者的一系列關於MVVM的博客:http://houseofbilz.com/archives/2009/05/22/adventures-in-mvvm-model-view-viewmodel/ – 2011-03-03 01:52:40

相關問題