「東雲 忠太郎」の平凡な日常のできごと

「東雲 忠太郎」の平凡な日常のできごと

2024.03.18
XML
カテゴリ: C#.NET


C#とWPFを使用してカスタムプログレスバーを作成する方法を示します。この例では、ProgressBarをカスタムコントロールとして作成し、値や色をカスタマイズできるようにします。


まず、新しいクラスを作成して、カスタムプログレスバーのコントロールを定義します。


CustomProgressBar.cs:


```csharp

using System.Windows;

using System.Windows.Controls;

using System.Windows.Media;


namespace CustomControls

{

    public class CustomProgressBar : ProgressBar

    {

        public static readonly DependencyProperty ProgressColorProperty =

            DependencyProperty.Register("ProgressColor", typeof(Brush), typeof(CustomProgressBar), new PropertyMetadata(Brushes.Blue));


        public Brush ProgressColor

        {

            get { return (Brush)GetValue(ProgressColorProperty); }

            set { SetValue(ProgressColorProperty, value); }

        }


        static CustomProgressBar()

        {

            DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomProgressBar), new FrameworkPropertyMetadata(typeof(CustomProgressBar)));

        }

    }

}

```


次に、カスタムプログレスバーのスタイルを定義します。このスタイルは、外観をカスタマイズするために使用されます。


Generic.xaml:


```xml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

                    xmlns:local="clr-namespace:CustomControls">


    <Style TargetType="{x:Type local:CustomProgressBar}">

        <Setter Property="Template">

            <Setter.Value>

                <ControlTemplate TargetType="{x:Type local:CustomProgressBar}">

                    <Grid>

                        <Rectangle Fill="{TemplateBinding Background}" />

                        <Rectangle x:Name="PART_Track" HorizontalAlignment="Left" Height="Auto" Margin="0" Stroke="{TemplateBinding BorderBrush}" VerticalAlignment="Stretch"/>

                        <Rectangle x:Name="PART_Indicator" HorizontalAlignment="Left" Height="Auto" Margin="0" Fill="{TemplateBinding ProgressColor}" VerticalAlignment="Stretch"/>

                    </Grid>

                </ControlTemplate>

            </Setter.Value>

        </Setter>

    </Style>


</ResourceDictionary>

```


これで、カスタムプログレスバーが定義されました。このコントロールを使用するには、XAMLでCustomProgressBarをインスタンス化し、必要に応じてProgressColorプロパティを設定します。


例えば、MainWindow.xaml:


```xml

<Window x:Class="CustomProgressBarDemo.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        xmlns:customControls="clr-namespace:CustomControls;assembly=CustomControls"

        Title="Custom ProgressBar Demo" Height="200" Width="300">

    <Grid>

        <customControls:CustomProgressBar Value="50" ProgressColor="Green" HorizontalAlignment="Center" VerticalAlignment="Center" Width="200"/>

    </Grid>

</Window>

```


この例では、Valueプロパティでプログレスバーの進捗状況を指定し、ProgressColorプロパティで進捗バーの色を指定しています。






お気に入りの記事を「いいね!」で応援しよう

Last updated  2024.03.18 05:22:42


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

© Rakuten Group, Inc.
X
Create a Mobile Website
スマートフォン版を閲覧 | PC版を閲覧
Share by: