2012-01-01 7 views
0

Stateという名前の依存プロパティを持つTextBoxから継承するカスタムコントロールがあります。 国は4つのオプション{不一致、待って、[OK]を、なし}CustomControlsへのバインドの問題

と列挙型であるジェネリックは、次のようになります。

<Style TargetType="{x:Type local:CustomTextBox}"> 
    <Style.Triggers> 
     <Trigger Property="State" Value="Mismatch"> 
      <Setter Property="Background" Value="{StaticResource MismatchBrush}"/> 
     </Trigger> 
    </Style.Triggers> 

    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type local:CustomTextBox}"> 
       <Border Background="{TemplateBinding Background}" 
         BorederBrush="{TemplateBinding BorederBrush}" 
         BorderThickness="{TemplateBinding BorderThickness}" 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 

私は、各プロパティがINotifyPropertyChangedのを実装受け取っ性質DataStateとのMyDataという名前のクラス、送信を、持っています。私のメインウィンドウで

私は、XAMLに次の行があります:私はBindedDataと呼ばれるタイプのMyDataからのフィールドを持っている

<custom:CustomTextBox State="{Binding BindingData.DataState}" Text="{Binding BindedData.Sent}"/> 

と私の見解モデルでは、ユーザーがBindedData.Sentの変更をいくつかのデータを送信するときと、何らかのロジックが発生した場合、BindedDataステートはMismatchに変わり、customTextBoxの背景はある色になる必要があります。

問題は、背景が動作していない状態のバインドとテキストバインディングが機能していないという意味を変更しないことです。

他のケース(カスタムコントロールではない)ではバインディングがどのように動作するのか分かりましたが、ここでも私はデバッグでチェックして、すべて正しいことを見ました。

ありがとうございます!

+0

@Matは今は大丈夫ですか? – david

答えて

0

多分、メインウィンドウからバックグラウンドを再設定することはできますか? 私はあなたのコードをコピーしようとしましたが、メインウィンドウからバックグラウンドを設定しないと(スタイルセッターをオーバーライドするので)完全に動作します。