私は4つのボタンを持っています。
ユーザーが任意のボタンをクリックすると、下の画像のように右側の矢印とともにラベルにテキストが表示されます。
出来ますか?
私がまさに欲しいのは:
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 のデータ バインディング フレームワークによって処理されます。