XAML でプロパティの添付プロパティを指定したいです。
単純に添付プロパティを指定するなら
AClass の AProperty が添付プロパティで、Binding ソースの prop プロパティに添付プロパティが設定されています
その状態でこのように添付プロパティを指定したいです
prop.local:AClass.AProp
使う場所は Trigger の Property です
<Trigger Property="prop.local:AClass.AProperty" Value="True"></Trigger>
しかしこの記法ではエラーになります
どう書くべきでしょうか?
補足
prop
は実際には既存のコントロールのプロパティで、 prop があるクラスをカスタマイズはできません
できない場合
DataTrigger とコンバーターを使った方法も試してみてうまくいかない箇所があったので、上記の書き方ができないなら以下の質問に答えてもらえればと思います。
<DataTrigger Binding="{Binding prop,Converter={StaticResource converter}}" Value="True"/>
このように Trigger を設定して、 converter で添付プロパティを返すようにしています
しかし、この場合は添付プロパティが更新されても prop 自体には変更がないためか、更新しても変化しません
ずっと初期の値のままです
変更を通知しようとしたのですが方法がわからず、 Binding を手動アップデートすることを考えたのですが、こちらも手動更新するために BindngExpression が必要なのに Binding した取得できずうまく行っていません
なんとかして添付プロパティの更新を反映させることはできないのでしょうか?
追記
うまく伝わっていないようなので、例をあげます
xaml
1<StackPanel local:AClass.A="a"> 2 <Label local:AClass.A="b"> 3 <Label.Resources> 4 <Style TargetType="Label"> 5 <Style.Triggers> 6 <!-- これは動く --> 7 <Trigger Property="local:AClass.A" Value="b"> 8 <Setter Property="Foreground" Value="Red"/> 9 </Trigger> 10 <!-- こっちは動かない --> 11 <Trigger Property="Parent.local:AClass.A" Value="a"> 12 <Setter Property="Background" Value="Blue"/> 13 </Trigger> 14 </Style.Triggers> 15 </Style> 16 </Label.Resources> 17 abcd 18 </Label> 19</StackPanel>
Label に添付プロパティが付与され Label の local:AClass.A
をトリガにするならエラーはでていません
ですが StackPanel に添付プロパティが付与され Label の Parent プロパティを経由して StackPanel の local:AClass.A
を見ようとするとエラーになります
C# コード側ですが、ここでいう StackPanel の添付プロパティを複数のイベントに応じて変更する View のコードです
ここは変更できません(Label にも同じ添付プロパティを付与するということは不可能ではないが避けたい)
今回のやりたいことで関係あるのは
cs
1AClass.SetA(stkpanel, "a");
でセットしているということくらいなので省略します
必要ならどういう箇所が必要かいっていただければと思います
また別例として、
xaml
1<ListView> 2 <ListView.Resources> 3 <Style TargetType="GridViewColumnHeader"> 4 <Style.Triggers> 5 <Trigger Property="Column.local:AClass.A" Value="a"> 6 <Setter Property="Foreground" Value="Blue"/> 7 </Trigger> 8 <Trigger Property="Column.local:AClass.A" Value="b"> 9 <Setter Property="Foreground" Value="Red"/> 10 </Trigger> 11 </Style.Triggers> 12 </Style> 13 </ListView.Resources> 14 <ListView.View> 15 <GridView> 16 <!-- カラムいろいろ --> 17 </GridView> 18 </ListView.View> 19</ListView>
ListView の GridViewColumnHeader の Trigger で Column につけられた添付プロパティを見たいというのもあります
よろしくおねがいします
