<ToggleButton Command="{Binding Path=Command}" Content="{Binding Path=DisplayName}" Template="{Utilities:BindableResource {Binding Path=TemplateResource}}">
<ToggleButton.Style>
<Style TargetType="ToggleButton">
<Style.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Template" Value="{Utilities:BindableResource {Binding Path=SelectedTemplateResource}}" />
</Trigger>
</Style.Triggers>
</Style>
</ToggleButton.Style>
</ToggleButton>
トグルボタンのテンプレートプロパティの最初のバインド可能なリソースは "TemplateResource"で動作しますが、 "SelectedTemplateResource"は、Tiggersセッターでは機能しません。このコードは、実際のリソースがテーマ化されたresourcedictionary内にあるresourcedictionary内にあります。リソース1は動作しません2は
setter値がxamlparseexceptionの場合、keyがnullであるというエラーが表示されます。私はこれを何時間もかけて階段を上ってきましたが、なぜそれがうまくいかないのか分かりません...スタイルを取り出して第1のバインディングを第2のリソースに置き換えると、適切に表示されますが、スタイル内のバインディングは機能しません。
誰もが何故考えているのですか?
編集 私はこれを試しましたが、運はありませんでした。これを見つけた後
<ToggleButton Command="{Binding Path=Command}" Content="{Binding Path=DisplayName}">
<ToggleButton.Style>
<Style TargetType="ToggleButton">
<Style.Triggers>
<Trigger Property="IsChecked" Value="False">
<Setter Property="Template" Value="{Utilities:BindableResource {Binding Path=TemplateResource}}" />
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Template" Value="{Utilities:BindableResource {Binding Path=SelectedTemplateResource}}" />
</Trigger>
</Style.Triggers>
</Style>
</ToggleButton.Style>
</ToggleButton>
[dependency property value precendence](http://msdn.microsoft.com/en-us/library/ms743230.aspx)を参照すると、エラーがなくても機能しないためです。 –
とにかくこの周辺にはありますか?コマンドとワークスペースの周りにmvvmパターンが設定されていて、コマンドは基本的に指定されたテーマリソースを持つボタンです...ボタンをクリックすると、選択された状態リソースの影響を受けるだけです。 – bl4kh4k
優先順位オーバーライドを修正するには、ローカル値( 'Template =" ... "')をスタイル内の 'Setter'に移動するだけです。 –