1

私の目標は、2つのコンテンツ値を持つボタンを作成することです。

スクラブルタイルをボタンとして想像してみてください。中央に大きな文字があり、右下に小さな数字があります。これが私が目指している効果です。

2つのContentPresenterオブジェクトを含むボタンを作成し、各ContentPresenterに異なるスタイルを指定しました。ただし、各プレゼンターに個別の値を与える方法は見つかりませんでした(つまり、ボタンのコンテンツを「X」に設定すると、スタイルは異なりますが、両方のContentPresenterに「X」が表示されます)。

どうすれば目標を達成できますか?私のアプローチは完全に間違っていると思います。

4

3 に答える 3

2

ああ...私は今何をすべきか知っていると思います。ボタンを変更するのではなく、独自のコントロールを作成する必要があります。これは、私がWinFormsで作業していれば明らかだったでしょうが、何らかの理由で、このXamlのすべてが私を愚かにしています。

于 2008-12-12T20:39:51.593 に答える
1

http://msdn.microsoft.com/en-us/library/ms753296.aspxにあるExpanderサンプルControlTemplateをご覧ください。

ExpanderはHeaderedContentControlのサブクラスであり、HeaderとContentの2つの「コンテンツ」があります。

コントロールテンプレートには2つのContentPresenter要素があります。デフォルトのcontentプロパティにバインドされていないContentPresenterは次のように定義されます。

<ContentPresenter ContentSource = "Header" />

Buttonを使用する必要があり、2番目のコンテンツに別のプロパティを追加したくない場合は、添付プロパティを使用して、2番目のContentPresnterContentプロパティをデータバインドします。

于 2008-12-14T09:36:47.527 に答える
0

ここでは、複数の「コンテンツ スロット」を使用して UserControl を作成することにしました。スロットの数に制限がないため、HeaderedControl から派生させるよりも優れています。

使用例:

<Window x:Class="TkMVVMContainersSample.Services.TaskEditDialog.ItemEditView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:Common="clr-namespace:TkMVVMContainersSample.Views.Common"
    Title="ItemEditView"
    >
    <Common:DialogControl>
        <Common:DialogControl.Heading>
            <!-- Heading string goes here -->
        </Common:DialogControl.Heading>
        <Common:DialogControl.Control>
            <!-- Concrete dialog's content goes here -->
        </Common:DialogControl.Control>
        <Common:DialogControl.Buttons>
            <!-- Concrete dialog's buttons go here -->
        </Common:DialogControl.Buttons>
    </Common:DialogControl>

</Window>
于 2009-06-23T17:54:58.517 に答える