2010-12-13 16 views
4

MultiDataTrigger.Conditionsをラジオボタンにバインドしたいのに機能しません。ここに私のシナリオです。参照でバインドするソースが見つかりません

私はGridPanelを持っています。GridPanelにはラジオボタンがあります。

私はこのように、GridPanelにダイナミックなラジオボタンを生成します。

RadioButton allAccountBtn = new RadioButton(); 
allAccountBtn.Name = "allAccountBtn"; 
GridPanel.Children.Add(allAccountBtn); 

はその後、私のXAMLで、私はこのラジオボタンの選択に基づいて変更されるイメージのボタンを持っていたし、他のコントロールのプロパティ。私はプログラムを実行すると、それはエラーコードを表示

<Button> 
<Button.Template> 
     <ControlTemplate> 
       <Image Name="addFolderIcon" Source="Icon/Decoration/folderColor.png"> 
       <ControlTemplate.Triggers> 
         <MultiDataTrigger> 
          <MultiDataTrigger.Conditions> 
            <Condition Binding="{Binding Tag, ElementName=folderBackBtn}" Value="{x:Null}"/> 
            <Condition Binding="{Binding IsChecked, ElementName=allAccountsBtn}" Value="True"/> 
          </MultiDataTrigger.Conditions> 
          <Setter Property="Control.IsEnabled" Value="False"/> 
          <Setter TargetName="addFolderIcon" Property="Source" Value="Icon/Decoration/folder.png"/> 
         </MultiDataTrigger> 
       </ControlTemplate.Triggers> 
     </ControlTemplate> 
</Button.Template> 
</Button> 

:ここ

が私のコードである「参照して結合するためのソースを見つけることができません」、との条件は第二の条件はfalseを返す(がelementName = allAccountsBtn)

どうしてですか?

動的に名前が付けられ、生成されたRadioButtonからIsCheckedプロパティを取得する方法はありますか。

+0

xamlにラジオボタンを追加すると、それが検出される可能性があります。そのため、問題が発生した場合、ElementNameは動的に生成されたコントロールを見つけることができません。 – VHanded

答えて

1

問題をローカライズしましょう。 RadioButtonをXAMLで直接GridPanelに追加してください。C#では使用できません。 エラーが解決しない場合は、コントロールを追加する動的な方法で問題が発生していません。

テンプレートの下にあるコントロールの「可視性」に問題があると思います。ビジュアルツリーの構築を強制するには、yourButton.ApplyTemplate()を呼び出すことができます。しかし、XAMLでどのように行われているかはわかりません。

+0

はい、問題はダイナミックに生成されたRadioButtonです。 RadioButtonをローカルに追加すると、エラーは発生しません。 GridPanelChildren.Add(allAccountsBtn)を呼び出した後、GridPanel.ApplyTemplate()を呼び出しますが、何も起こりません。 allAccountsBtn.ApplyTemplate()にも同じことが起こります... データはデータベースからのものであるため、RadioButtonを動的に含める必要があります。 – VHanded

+0

どこかから読んでください、動的に生成されたコントロールはローカルコントロールと異なる名前空間を持っていますが、私はこの手がかりをどう扱うべきか分かりません。 – VHanded

+0

それは問題ありません。ありがとう。 – VHanded

2

私は、あなたが「allAccountBtn」(単数の「アカウント」)にご動的に生成されたオブジェクトにNameプロパティを設定しているが、あなたのXAMLのElementNameは「allAccountsBtn」(複数の「アカウント」)を参照されて気づきました。同じものに変更してみてください。

関連する問題