2

ShellView のツールバーのボタンのリストとしてバインドされている場合、Caliburn Micro フレームワークが SinglePaintToolbarView を取得しているようには見えません。ボタンがツールバーに追加されたときに、ボタンのテキスト コンテンツを表示するだけにしたいと思います。しかし、代わりに私はこれを得ています:

ツールバーにクリック可能なボタンがないようです。リスト内のプラグインの 1 つを ContentControl としてバインドでき、ビューが表示されたため、プラグインが正常に読み込まれていることがわかりました。ツールバーでプラグインのリストをバインドしようとすると、うまくいかないようです。

ここに私が持っているものがあります:

ShellView.xaml

<UserControl x:Class="Starbolt.Views.ShellView"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" 
         d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <ToolBarTray>
            <ToolBar ItemsSource="{Binding Path=ToolbarPlugins}"/>
        </ToolBarTray>
    </Grid>
</UserControl>

ShellViewModel.cs

[Export(typeof(IShell))]
public class ShellViewModel : PropertyChangedBase, IShell
{

    [ImportMany(typeof(IToolbarPlugin))]
    private IEnumerable<IToolbarPlugin> _toolbarPlugins = null;

    public IEnumerable<IToolbarPlugin> ToolbarPlugins { get { return _toolbarPlugins; } }
}

SinglePaintToolbarView.xaml

<UserControl x:Class="Starbolt.Plugin.SinglePaintTool.Views.SinglePaintToolView"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" 
         d:DesignHeight="128" d:DesignWidth="32">
    <Button Name="btnSinglePaintTool" Content="Single Paint Tool" Width="128" Height="32"/>
</UserControl>

SinglePaintToolViewModel.cs

[Export(typeof(IToolbarPlugin))]
public class SinglePaintToolViewModel : IToolbarPlugin
{

}
4

1 に答える 1

0

基本的に、あなたのデザインは機能しているようです。交換すれば

<ToolBarTray>
    <ToolBar x:Name="ToolbarPlugins"/>
</ToolBarTray>

(明示的にバインドする必要がないことに注意してくださいItemsSource。Caliburn Micro プロパティの名前規則を使用することもできます)。

<ListBox x:Name="ToolbarPlugins"/>

SinglePaintToolViewボタンは意図したとおりに表示されます。

問題はToolBar ControlTemplateにあると思われます。これは、たとえばListBox ControlTemplateよりもツールバー項目のレイアウトを確実に制限します。

ToolBarしたがって、ビューを表示するためにコントロールを本当に使用したい場合は、IToolbarPluginおそらくプロジェクトで専用のToolBarコントロール テンプレートを設計する必要があると思います。

または、例を使用してツールバーの置換を実装することもできますListBox。これは始まりかもしれません:

<ListBox x:Name="ToolbarPlugins">
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
</ListBox>
于 2012-06-26T15:44:18.850 に答える