2017-04-24 48 views
2

我不完全知道問題是什麼,因爲我幾乎肯定我做了其他職位告訴我要做的事情。所以它應該工作之前,我綁定了一個可觀察的字符串集合到一個組合框。Generic.xaml綁定到objectDataProvider

DATACLASS:

namespace UIBlocksLib.Data_VM__classes 
{ 
    public class BlockController : INotify, IStatementCollection 
    { 
     private List<UIStackBlock> _mUIStackBlocks = new List<UIStackBlock>(); 
     public ObservableCollection<string> _mUIVariables = new ObservableCollection<string>() { "VariableA", "VariableB", "VariableC" }; 

     public event PropertyChangedEventHandler PropertyChanged; 

     public ObservableCollection<string> getVariables 
     { 
     get 
     { 
      return _mUIVariables; 
     } 
     set 
     { 
      _mUIVariables = value; 
      onPropertyChanged("_mUIVariables"); 
     } 
     } 

     public BlockController() 
     { 
     } 
     public void addVariable(string aVariableName) 
     { 
     _mUIVariables.Add(aVariableName); 
     onPropertyChanged("_mUIVariables"); 
     } 

     public void addUIStackBlock(UIStackBlock aUIStackBlock) 
     { 
     throw new NotImplementedException(); 
     } 

     public void onPropertyChanged(string aPropertyName) 
     { 
     PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(aPropertyName)); 
     } 

     public void removeStackBlockByIndex(int aIndex) 
     { 
     throw new NotImplementedException(); 
      } 
     } 
    } 

我在我的generic.xaml的ObjectDataProvider

<ObjectDataProvider x:Key="dataObject" 
          ObjectType="{x:Type dataClass:BlockController}" 
          MethodName="getVariables"> 
    </ObjectDataProvider> 

和我的風格,這勢必會我的課

<Style TargetType="{x:Type local:UISet}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type local:UISet}"> 
        <Grid> 
         <Rectangle MouseLeftButtonDown="MouseLeftButtonDown" Height="{TemplateBinding Height}" Width="{TemplateBinding Width}" Fill="#AD2B27" ClipToBounds="True"/> 
         <ComboBox DataContext="{staticResource dataObject}" Background="#FFEE4A4A" x:Name="comboBox" MinHeight="30" MinWidth="70" Margin="5, 23" ItemsSource="{Binding}"/> 
        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

也試圖使上下文靜態/不使用上下文/使用變量的名稱。編譯器在查看建議時確實會識別getVariables。

回答

1

在你的代碼中getVariables不是一個方法,而是一個屬性。這樣它應該工作:

<ObjectDataProvider x:Key="dataObject" 
          ObjectType="{x:Type dataClass:BlockController}" 
          MethodName="GetVariables"> 
    </ObjectDataProvider> 

public ObservableCollection<string> GetVariables() 
     { 
      return getVariables; 
     } 
+0

Eugh,我真的不知道我怎麼沒注意到。謝謝,它工作得很好。 – Lloyd

相關問題