2010-12-14 9 views
2

コントロールを修正不可能にすると、一貫したスタイルを維持するためにTextBoxとして表示されます。問題は、ComboBoxは任意のタイプのデータを持つことができるため、のプロパティをバインドすることは、SelectedItemを使用するのと同じくらい単純ではありません。WPF - スタイル設定ツール内から親コントロールにアクセスするControlTemplate

<Style TargetType="{x:Type ComboBox}"> 
     <Style.Triggers> 
      <Trigger Property="IsReadOnly" Value="True"> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate> 
          <TextBox Text="{Binding RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}, Path=????, Converter={StaticResource ResourceKey=ComboToTextConverter}, UpdateSourceTrigger=PropertyChanged}" /> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 

私が持っているアイデアはConverterを使用して、それがConverterコードで処理できるように、全体ComboBoxを送信することです。これを行うためにとにかくありますか?

その他のご提案は大歓迎です! 、それをあなたがComboBoxにtrueにIsReadOnlyプロパティを設定すると

<Style TargetType="ComboBox" x:Key="cStyle"> 
<Style.Triggers> 
    <Trigger Property="IsReadOnly" Value="True"> 
    <Setter Property="Template"> 
     <Setter.Value> 
     <ControlTemplate TargetType="ComboBox"> 
      <TextBox Text="{Binding RelativeSource= 
        {RelativeSource TemplatedParent}, 
        Path=SelectedValue}" /> 
     </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
    </Trigger> 
</Style.Triggers> 

、今HERESにあなたのComboBox

<ComboBox Name="cbox" ItemsSource="{Binding}" 
     Style="{StaticResource cStyle}" 
     SelectedValuePath="SomeText" 
     DisplayMemberPath="SomeText" /> 

+0

この問題を解決しましたか? – DRapp

答えて

2

あなたはSelectedValueSelectedValuePathプロパティを使用する必要があります選択された値をiとしてTextBoxに変わりますテキスト。

関連する問題