2017-11-08 42 views
1

コンボボックスにデフォルト値 'select'を追加する必要があります。この値をデータベースに追加することはできません。この位置値は動的です。これはuserroleに基づいて表示されます。私は何も働かなかったさまざまな方法を試しました。助けてください。 wpfコンボボックスのデフォルト値をtextBlock

<ComboBox Width="140" ItemsSource="{Binding SecurityContexts, Mode=OneWay}" 
         SelectedItem="{Binding ActiveSecurityContext, Mode=TwoWay}" 
         ToolTip="Working Location"> 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Location}"/> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 

コードが後ろ SecurityContexts =新規のObservableCollection(_currentUser.ApplicationSecurityContexts)です。

public interface IApplicationSecurityContext 
{ 
    IRole Role { get; } 
    string Location { get; } 
    IEnumerable<string> Budgets { get; } 

} 

public IApplicationSecurityContext ActiveSecurityContext 
    { 
     get { return this._currentUser.ActiveSecurityContext; } 
     set 
     { 
      if (this._currentUser.ActiveSecurityContext != value) 
      { 
       this._currentUser.ChangeActiveSecurityContext(value); 

       RaisePropertyChanged("CurrentUser"); 

       LoadData(); 
      } 
     } 
    } 
+1

カスタムオブジェクトを定義されたパスです:あなたは、あなたのアイテムがC cがあること

ノートを表示する方法を定義するには、あまりにもリソースにあなたのコレクションのためのあなたのDataTemplateを定義する必要があります:コンボボックスアイテムとして表示されるべき "場所"プロパティを公開するSecurityContextsクラスのコレクションを持っています。 1つの要素を正しく追加するだけでいいですか? –

+0

申し訳ありません。以前のコメントでは「行く」のではなく「やっている」。しかし、あなたに私たちにいくつかの説明を与えていないなら、あなたに答えを与えるのは難しいでしょう。多分xamlだけでなく、特に "SecurityContexts"と何が作られているのかというコードを投稿してください。 –

+0

ありがとうございます。追加されたコードを確認してください...コンボボックスは、ユーザーの役割に基づいてlocation1、location5などを表示します...コンボボックスにデフォルト値 'select'を追加するだけです – newbee

答えて

0

あなたはこれを行うことができますCompositeCollection

を使用して、あなたの目標を達成することができます。あなたのグリッド/ユーザーコントロール/コンボボックスでリソースを定義します

<Grid.Resources> 
     <CollectionViewSource x:Key="cvs" Source="{Binding Binding SecurityContexts, Mode=OneWay}" /> 
     <DataTemplate DataType="{x:Type c:SecurityContexts}"> 
      <TextBlock Text="{Binding Location}"/> 
     </DataTemplate> 
    </Grid.Resources> 

、あなたのコンボボックスがitemsourceは次のようになります。それが動作するはずです

<ComboBox.ItemsSource> 
    <CompositeCollection> 
     <ComboBoxItem> 
     <TextBlock Text="select"/> 
     </ComboBoxItem> 
     <CollectionContainer Collection="{Binding Source= {StaticResource cvs}}"/> 
    </CompositeCollection> 
</ComboBox.ItemsSource> 

。 SecurityContextsあなたが実際に起こっている何が

+0

Daniele ..ありがとうあなたが提供したソリューションを実装しようとしました...私はの問題を抱えています...>それはSecurityContextsが存在しないと言います...私はwpf .. 。私は何かが間違っていると思う。 – newbee

+0

多分私は十分ではなかった。 c:あなたのアプリケーションがSecurityContextを見つけることができるパスを表します。だからあなたのUserControlでこれを定義する必要があります:xmlns:c = "clr-namespace:yourProject.YourClass"。 –

関連する問題