1

WPFアプリケーションの構築に複合アプリケーションガイダンスパターンを使用しています。私のシェルには、ビューを領域に動的にロードするための領域を含むタブコントロールがあります。ビューは、TabControlの新しいタブにロードされます。

  <TabControl     
      AutomationProperties.AutomationId="MainTabControl" 
      cal:RegionManager.RegionName="{x:Static inf:RegionNames.MainRegion}" 
      Width="Auto" Height="Auto" Margin="10,10,0,0" 
      HorizontalAlignment="Stretch"                            
      IsSynchronizedWithCurrentItem="True"
      ItemTemplate="{StaticResource TabItemTemplate}"
SelectionChanged="TabControl_SelectionChanged">

CloseButtonを実装するためのDataTemplate「TabItemTemplate」があります。DataTemplateのボタンのコマンドをpresentationModelの閉じるコマンドにバインドする方法がわかりません。コマンドをCompositCommandにバインドすると、コマンドが実行されます。ただし、閉じるボタンが押されたタブを特定し、そのPresentationModelでcloseCommandのみを実行する必要があります。以下はdataTemplateです。

<DataTemplate x:Key="ClosableTabItemTemplate">
            <DockPanel Width="120">
                <Button 
                    Command="inf:CloseCommands.CloseCommand"
                    Content="X"
                    Cursor="Hand"
                    DockPanel.Dock="Right"
                    Focusable="False"
                    FontFamily="Courier" 
                    FontSize="9"
                    FontWeight="Bold"  
                    Margin="0,1,0,0"
                    Padding="0"
                    VerticalContentAlignment="Bottom"
                    Width="16" Height="16" 
                    />
                <ContentPresenter 
        Content="{Binding}" 
        VerticalAlignment="Center" 
        />
            </DockPanel>
        </DataTemplate> 

誰かがこのバインディングの問題を解決する方法を知っていますか?

4

3 に答える 3

0

この問題の解決策を見つけました。問題は、UserControl を TabControl にバインドするときでした。ユーザー コントロールに設定されているのは contentpane のデータ コンテキストのみであり、headerpane の datacontext はまだ null です。しかし、アイテム用とコンテンツ用の 2 つのデータ テンプレートを定義してから、presentationModel をリージョンに追加すると、アイテムとコンテンツの両方の dataContext が読み込まれます。その後、itemTemplate で、presentationModel の delegateCommand プロパティにバインドできます。

于 2009-03-24T06:39:21.387 に答える
0

プロパティによって公開される DelegateCommand など、viewmodel のコマンド インスタンスにバインドするか、CommandParameter を TabItem の DataContext にバインドして、共有コマンドをアイテムに渡すことができるようにする必要があります。

于 2009-03-22T22:30:43.130 に答える