我正在努力将 ContentPresenter 放入工具栏中。我有一个带有视图模型 DashboardViewModel 的用户控件 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。另一个 ToolBar 可以。
我已将 ContentPresenter 放在工具栏之外的 Grid 中,它看起来很好。所以它与工具栏有关,但我不知道是什么。
更新:我还尝试(在很多事情中)将 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 只是为子视图模型保存上述属性,只需 {get; 放;}
如前所述,这在工具栏托盘上方的视图中连续工作得很好。
蒂亚!
珍妮