さて、私はWPFと人気のあるMVVMパターンを理解しようとしています。
今、私はこの問題を抱えています。いくつかのタブがあるリボンコントロールを使用しています。私のViewModelには、現在アクティブなタブを反映するプロパティ「ActiveTab(文字列)」があります。
Ribboncontrolにはこの情報を表示するプロパティがないため、バインドできません。
だから私は考えていました:
選択したイベントを次のようにバインドできます。
<r:RibbonTab Label="tab1" Selected="RibbonTab_Selected"></r:RibbonTab>
<r:RibbonTab Label="tab2" Selected="RibbonTab_Selected"></r:RibbonTab>
<r:RibbonTab Label="tab3" Selected="RibbonTab_Selected"></r:RibbonTab>
<r:RibbonTab Label="tab4" Selected="RibbonTab_Selected"></r:RibbonTab>
<r:RibbonTab Label="tab5" Selected="RibbonTab_Selected"></r:RibbonTab>
次に、コードビハインドで、Activetab=sender.Labelを使用してビューモデルにプロパティを設定します。
しかし、その後、ビューの背後にあるコードでビューモデルを参照する必要があります。
私はファイルの背後にあるコードを使用せずにこの問題を解決しようとしています。(MVVM)。
さて、本当の質問です 。イベントトリガーまたはイベントセッターを使用することはどういうわけか可能ですか。選択したイベントが発生したとき。セッターは、activetabプロパティをsender.Label value?に自動的に設定します。
xamlのみを使用します。
-私のかなり悪い英語と多分noobish質問のための私の言い訳。私はwpf=)で非常に新しいです
更新: 私がちょうど見つけたように、ribbonTabにisSelectedプロパティがあります。
ビューモデルのプロパティにバインドする方法に問題があります。
次のコードを試しました。
<Style TargetType="{x:Type r:RibbonTab}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="{Binding SelectedTab}" Value="{Binding RelativeSource=Self, Path=Label}" />
</Trigger>
</Style.Triggers>
</Style>
しかし、これは機能しません:
Error 1 Cannot find the Style Property 'SelectedTab' on the type 'Microsoft.Windows.Controls.Ribbon.RibbonTab'.
SelectedTabオフコースは私のビューモデルにあり、ribbonTabにはありません...
セッターを作成し、タブの値を使用してビューモデルのプロパティを設定するにはどうすればよいですか?=)
前もって感謝します!!