0

私は4つのボタンを持っています。

ユーザーが任意のボタンをクリックすると、下の画像のように右側の矢印とともにラベルにテキストが表示されます。

ここに画像の説明を入力

出来ますか?

私がまさに欲しいのは:

ここに画像の説明を入力

4

1 に答える 1

3

a の内容はButtonほとんど何でもかまいません。WPF の幾何プリミティブを使用して右矢印を描画し、パネルを使用してテキストと一緒に配置できます。

ただし、あなたの場合、Webdings フォントを使用TextBlockした追加機能で十分です。Run

<Button>
  <TextBlock>Bitmaps <Run FontFamily="Webdings">4</Run></TextBlock>
</Button>

あなたが何について尋ねているのかはまだはっきりしていませんが、もう少し情報を提供できるようにします。

xaml の代わりに vb.net または c# を使用するということですか?

WPF では、通常、XAML で UI を設計してから、XAML で要素に名前を付けてコード ビハインドからアクセスするか、データ バインディングを使用してビュー モデル (MVVM スタイル) にバインドします。ただし、XAML はオブジェクト グラフを宣言するために使用される単なる表記であり、必要に応じてそのオブジェクト グラフをコードで作成できます。

var textBlock = new TextBlock();
textBlock.Text = "Bitmaps ";
var run = new Run();
run.Text = "4";
run.FontFamily = new FontFamily("Webdings");
textBlock.Inlines.Add(run);
var button = new Button();
button.Content = textBlock;

XAML は、C# バージョンに比べてはるかに理解しやすいと思います。

本当にやりたいことが動的なユーザー インターフェイスを持つことであり、XAML を使用してそれを実現する方法がわからない場合は、ここで MVVM を使用してそれを行う方法を示します。最初に、表示するアイテムを含む非常に単純なビュー モデルを作成します。

class ViewModel {

  public ViewModel() {
    Items = new ObservableCollection<String>();
  }

  public ObservableCollection<String> Items { get; private set; }

}

ビューモデルを作成する必要があるコードのどこかで、表示されるもの (通常は Window、UserControl、または Page) のデータ コンテキストとして設定する必要があります。簡単にするために、ここではウィンドウのコンストラクターでそれを行います。

public MainWindow() {
  InitializeComponent();
  var viewModel = new ViewModel();
  viewModel.Items.Add("Computer");
  viewModel.Items.Add("SetUp (D:)");
  viewModel.Items.Add("DELL Webcam");
  viewModel.Items.Add("Bitmaps");
  DataContext = viewModel;
}

アイテムのリストを表示するには、次の XAML を使用します。

<ItemsControl ItemsSource="{Binding Items}">
  <ItemsControl.ItemTemplate>
    <DataTemplate>
      <TextBlock>
        <TextBlock.Inlines>
          <Run Text="{Binding Mode=OneWay}"/>
          <Run Text="4" FontFamily="Webdings"/>
          <Run Text=" "/>
        </TextBlock.Inlines>
      </TextBlock>
    </DataTemplate>
  </ItemsControl.ItemTemplate>
  <ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
      <StackPanel Orientation="Horizontal"/>
    </ItemsPanelTemplate>
  </ItemsControl.ItemsPanel>
</ItemsControl>

各アイテムは、三角形を表示するTextBlockためのエクストラを使用してレンダリングされます。Runアイテムは、 を使用して水平方向に積み重ねられStackPanelます。

ViewModel.Itemsコレクションは を使用して実装されているため、ObservableCollection<T>実行時に項目が追加または削除されると、追加の C# コードを使用せずにそれに応じてユーザー インターフェイスが更新されます。すべては、WPF のデータ バインディング フレームワークによって処理されます。

于 2013-06-09T07:30:09.267 に答える