• 카테고리

    질문 & 답변
  • 세부 분야

    데스크톱 앱 개발

  • 해결 여부

    해결됨

버튼 클릭시 progressBar가 100으로 채워지지 않는 현상

23.12.23 23:00 작성 조회수 99

0

MainViewModel.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;

namespace WpfApp2.ViewModels
{
  
    internal class MainViewModel
    {

        private int progressValue;

        public int ProgressValue
        {
            get { return progressValue; }
            set 
            { 
                progressValue = value;

   
                NotifyPropertyChanged(nameof(ProgressValue));
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;

       
        private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

MainWindow.xaml

<Window x:Class="WpfApp2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp2"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Window.Resources>
        <Style x:Key="testStyle">
            <Setter Property="Button.Background">
                <Setter.Value>

                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                        <GradientStop Color="Black"/>
                        <GradientStop Color="#FF16CEA8" Offset="1"/>
                        <GradientStop Color="#FF0C735E" Offset="0.563"/>
                        <GradientStop Color="#FF0B6C58" Offset="0.533"/>
                    </LinearGradientBrush>

                </Setter.Value>

            </Setter>
            <Style.Triggers>
                <!--progressBar1의 value가 100이면 동작-->
                <DataTrigger Binding="{Binding ElementName=progressBar1,Path=Value}" Value="100">

                    <Setter Property="Control.Visibility" Value="Hidden"></Setter>

                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>
    <Grid>
        <Label Content="제목" Style="{StaticResource testStyle}" Width="100" Height="40" VerticalAlignment="Top"/>
        <Button Content="버튼" Width="200" Height="50" HorizontalAlignment="Left" Style="{StaticResource testStyle}" Click="Button_Click"/>
        <CheckBox x:Name="check1" Content="체크박스" Width="100" Height="40" Margin="23,125,677,269"></CheckBox>
        <ProgressBar x:Name="progressBar1"  Width="200" Height="20" Value="{Binding ProgressValue}"  />

    </Grid>
</Window>

 

MainWindow.cs

using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using WpfApp2.ViewModels;

namespace WpfApp2
{
    
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        MainViewModel viewModel;

        public MainWindow()
        {
            InitializeComponent();

            viewModel = new MainViewModel();

       
            viewModel.ProgressValue = 30;
            DataContext = viewModel;

        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            viewModel.ProgressValue = 100;
                        
            
        }
    }
}

 

실행을 하면 처음 30은 채워져있는데 버튼을 클릭했을 때 100으로 채워지지 않습니다. 물론 100으로 채워지지 않으니 라벨과 버튼이 사라지는 이벤트도 작동하지 않구요. 어떤부분이 잘못 되었는지 몰라서 질문합니다

답변 1

답변을 작성해보세요.

0

안녕하세요.개발자park입니다.

https://www.inflearn.com/course/lecture?courseSlug=wpf-subtitles&unitId=111428&tab=curriculum

7:52분초부터 소개되는 내용이 없어보입니다.

추가해주시면 되겠습니다.

감사합니다.

김영주님의 프로필

김영주

질문자

2023.12.24

해결했습니다 감사합니다!