スライダーコントロールの値をラベルにバインドし表示します。
プロジェクトの作成
cd (mkdir NoXAML08)
dotnet new wpf -f net8.0
rm *.xaml
rm MainWindow.xaml.cs
ソースコード
ファイル名:NoXAML08.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UseWPF>true</UseWPF>
<StartupObject>NoXAML08.App</StartupObject>
</PropertyGroup>
</Project>
ファイル名:App.xaml.cs
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
namespace NoXAML08;
public partial class App : Application
{
// エントリポイント
[STAThread]
public static void Main()
{
var app = new App();
app.Startup += (sender, e) =>
{
// ウィンドウの構築と表示
var window = new Window
{
Title = "XAMLなしSliderバインディング",
Width = 300,
Height = 100,
};
// StackPanel(横方向)
var panel = new StackPanel
{
Orientation = Orientation.Horizontal
};
// Sliderの作成
var slider = new Slider
{
Name = "Slider1",
Width = 120,
Minimum = 1,
Maximum = 100,
SmallChange = 1,
LargeChange = 2,
Value = 10
};
// Labelの作成とバインディング設定
var label = new Label();
var binding = new Binding("Value")
{
Source = slider,
Mode = BindingMode.OneWay
};
label.SetBinding(Label.ContentProperty, binding);
// 要素をStackPanelに追加
panel.Children.Add(slider);
panel.Children.Add(label);
// ウィンドウにStackPanelを設定
window.Content = panel;
window.Show();
};
app.Run();
}
}
実行
dotnet run
コメント