2

ContentPresenter をツールバーに配置するのに苦労しています。ビューモデルのDashboardViewModelを備えたUserControlのDashboardViewがあります。私の ContentPresenter は次のように設定されています。

UserControl.Resources には、次のものがあります。

<DataTemplate DataType="{x:Type DashboardVM:DashboardViewModel}">
     <Dashboard:DashboardView />
</DataTemplate>

そしてツールバーで:

<ToolBarTray Margin="0" DockPanel.Dock="Top">
    <ToolBar Band="0" BanIndex="0">
        <--! other stuff -->
    <ToolBar Band="0" BandIndex="1" MinWidth="500" ToolBarTray.IsLocked="True">
          <ContentPresenter Content="{Binding Path=DashboardViewModel}" />
    </ToolBar>
</ToolBarTray>

実行時に ContentPresenter は表示されません。もう一方のツールバーはそうです。

ContentPresenter をツールバーの外側のグリッドに配置しましたが、問題なく表示されます。それはツールバーの何かですが、何がわかりません。

更新: 私はまた、次のように ContentPresenter を MenuItem に配置しようとしました:

            <ToolBar Band="0" BandIndex="1">
                <MenuItem>
                    <MenuItem.Header>
                        <ContentPresenter Content="{Binding Path=DashboardViewModel}"/>
                    </MenuItem.Header>
                </MenuItem>
            </ToolBar>

まだ姿を現さない。

より詳しい情報:

ダッシュボード ビュー:

<UserControl x:Class="Wsi.Common.View.Dashboard.DashboardView"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:Dashboard="clr-namespace:Wsi.Common.ViewModel.Dashboard"
         xmlns:view="clr-namespace:Wsi.Common.View.Dashboard"
         MinWidth="500"
         MinHeight="30"
         MaxHeight="70">

<UserControl.Resources>
    <DataTemplate DataType="{x:Type Dashboard:DashboardItemViewModel}">
        <view:DashboardItemView />
    </DataTemplate>
</UserControl.Resources>

<StackPanel MaxHeight="70" Orientation="Horizontal">
    <ContentPresenter x:Name="fileSystemDashboardItem" Content="{Binding Path=FileSystemDashboardItemViewModel}" />
    <ContentPresenter x:Name="spreadHealthDashboardItem" Content="{Binding Path=SpreadHealthDashboardItemViewModel}" />
    <ContentPresenter x:Name="spreadStatsDashboardItem" Content="{Binding Path=SpreadStatsDashboardItemViewModel}" />
    <ContentPresenter x:Name="acquisitionStatsDashboardItem" Content="{Binding Path=AcquisitionStatsDashboardItemViewModel}" />
    <ContentPresenter x:Name="backhaulHealthDashboardItem" Content="{Binding Path=BackhaulHealthDashboardItemViewModel}" />
    <ContentPresenter x:Name="serverHealthDashboardItem" Content="{Binding Path=ServerHealthDashboardItemViewModel}" />
</StackPanel>

DashboardViewModel は、上記のようにサブビューモデルのプロパティを単純に保持します。設定;}

前に述べたように、これは ToolBarTray の上の View で連続して美しく機能しました。

ティア!

ジャネン

4

2 に答える 2

0

ContentPresenterとを混同している可能性があると思いますContentControl

AContentPresenterは、ビジュアル階層のどこにカスタムコンテンツをContentControlのControlTemplateに表示するかを示すために使用されます。

AContentControlは、UIに配置できる実際のコントロールです。

代わりにこれを行うとどうなりますか?

<DataTemplate DataType="{x:Type DashboardVM:DashboardViewModel}">
     <Dashboard:DashboardView />
</DataTemplate>

<ToolBarTray Margin="0" DockPanel.Dock="Top">
    <ToolBar Band="0" BanIndex="0">
        <--! other stuff -->
    <ToolBar Band="0" BandIndex="1" MinWidth="500" ToolBarTray.IsLocked="True">
          <ContentControl Content="{Binding Path=DashboardViewModel}" />
    </ToolBar>
</ToolBarTray>
于 2012-07-20T22:33:49.630 に答える
0

自分の質問に答える...私のコードには何も問題はありませんでした。ContentPresenter の Contents の項目がツールバーの幅を超えていました。コンテンツが広すぎるため、ツールバーには何も表示されませんでした。

サイズ変更について、私のs ** tをより小さく、より賢くするために私が必要とするバグを追いかけて丸一日。

于 2012-07-21T04:05:17.220 に答える