WPF의 진행률 표시줄에 있는 텍스트
이것은 WPF cognoscenti에게는 어렵지 않을 수 있지만, WPF Progress Bar에 텍스트를 넣을 수 있는 간단한 방법이 있는지 알고 싶습니다.제가 보기에 빈 진행 표시줄은 벌거벗은 것처럼 보입니다.그것은 진행 중인 것에 대한 메시지를 전달하거나 심지어 표현에 숫자를 추가할 수 있는 스크린 부동산입니다.WPF는 컨테이너와 확장 기능에 관한 것입니다. 이제 천천히 생각을 정리하고 있습니다. 하지만 "텍스트" 또는 "내용" 속성이 보이지 않기 때문에 진행률 표시줄인 컨테이너에 무언가를 추가해야 할 것 같습니다.원래 WinForms의 충동보다 더 자연스러운 기술이 있습니까?진행 표시줄에 텍스트를 추가하는 가장 좋고 가장 자연스러운 WPF 방법은 무엇입니까?
두 개의 이전 응답(새 항목 생성)CustomControl
또는Adorner
)가 더 나은 방법이지만, 빠르고 더럽거나 시각적으로 방법을 이해하고 싶다면 이 코드가 작동합니다.
<Grid Width="300" Height="50">
<ProgressBar Value="50" />
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">
My Text
</TextBlock>
</Grid>
z-index는 마지막으로 나열된 항목이 맨 위에 있다는 것을 명심하십시오.
또한, 만약 당신이 아직 Kaxaml을 가지고 있지 않다면, 그것을 꼭 집어라 - 그것은 당신이 무언가를 알아내려고 할 때 XAML을 가지고 노는 것에 매우 좋습니다.
이 작업은 매우 간단할 수 있습니다(이 작업을 수행하는 방법이 많지 않은 경우).
사용할 수 있습니다.Style
이 일을 끝내거나 그냥 덮어씌우는 것.TextBlock
그리고 aProgressBar
.
저는 개인적으로 이것을 사용하여 완료를 기다릴 때 진행률을 표시합니다.
매우 단순하게 유지하기 위해 저는 하나만 갖고 싶었습니다.
Binding
오직, 그래서 나는 첨부했습니다.TextBock.Text
에게ProgressBar.Value
.
그럼 코드를 복사하면 됩니다.
<Grid>
<ProgressBar Minimum="0"
Maximum="100"
Value="{Binding InsertBindingHere}"
Name="pbStatus" />
<TextBlock Text="{Binding ElementName=pbStatus, Path=Value, StringFormat={}{0:0}%}"
HorizontalAlignment="Center"
VerticalAlignment="Center" />
</Grid>
다음은 이러한 방식입니다.
전체 게시물에 대한 WPF 튜토리얼을 확인하십시오.
텍스트를 추가하기 위해 재사용 가능한 방법이 필요한 경우 텍스트를 표시하는 추가 텍스트 블록이 있는 새 스타일/제어 템플릿을 작성할 수 있습니다.텍스트 검색을 가로챌 수 있습니다.진행률 표시줄에 텍스트를 설정하는 텍스트 첨부 속성입니다.
재사용할 필요가 없는 경우 진행 표시줄을 그리드에 넣고 텍스트 블록을 그리드에 추가하기만 하면 됩니다.WPF는 요소를 함께 구성할 수 있기 때문에 잘 작동할 것입니다.
원하는 경우 ProgressBar 및 TextBlock을 공개 속성으로 표시하는 UserControl을 생성할 수 있으므로 사용자 정의 ControlTemplate를 생성하는 것보다 작업량이 적습니다.
관리자를 사용하여 관리자 위에 텍스트를 표시할 수 있습니다.
장식품에 대한 MSDN 문서 참조
Adorner 클래스에서 상속되는 클래스를 만듭니다.OnRender 메서드를 재정의하여 원하는 텍스트를 그립니다.원하는 경우 표시할 텍스트가 포함된 사용자 정의 Adorner에 대한 종속성 속성을 생성할 수 있습니다.그런 다음 앞서 언급한 링크의 예제를 사용하여 진행률 표시줄의 도너 레이어에 이 도너를 추가합니다.
2개의 특성(값/최대값)에서 텍스트 및 바인딩이 있는 진행률 표시줄:
<Grid>
<ProgressBar Name="pbUsrLvl"
Minimum="1"
Maximum="99"
Value="59"
Margin="5"
Height="24" Foreground="#FF62FF7F"/>
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock.Text>
<MultiBinding StringFormat="{}UserLvl:{0}/{1}">
<Binding Path="Value" ElementName="pbUsrLvl" />
<Binding Path="Maximum" ElementName="pbUsrLvl" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</Grid>
재처리:
동일하지만 진행률(%):
<Grid>
<ProgressBar Name="pbLifePassed"
Minimum="0"
Value="59"
Maximum="100"
Margin="5" Height="24" Foreground="#FF62FF7F"/>
<TextBlock Text="{Binding ElementName=pbLifePassed, Path=Value, StringFormat={}{0:0}%}"
HorizontalAlignment="Center" VerticalAlignment="Center" />
</Grid>
버튼을 클릭합니다.ProgressBar
템플릿 편집 > 복사본 편집을 클릭합니다.
다음에 그에다음그를 .TextBlock
의 마 막 꼬 리 바 표 바 같 와 이 된 시 에 위 지 로 표 ▁of 이같 ▁tag ▁the ▁just ▁as ▁above ▁shown ▁below ▁closing 의 와 바 된 마Grid
VS가 생성한 스타일로.
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="2"/>
<TextBlock Background="Transparent" Text="work in progress" Foreground="Black" TextAlignment="Center"/>
</Grid>
<ControlTemplate.Triggers>
이는 주어진 답변을 기반으로 합니다.저는 MahApps Metro를 사용하고 있기 때문에 다음과 같은 결과를 얻었습니다.
<Grid>
<metro:MetroProgressBar x:Name="pbar" Value="50" Height="20"></metro:MetroProgressBar>
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding ElementName=pbar, Path=Value, StringFormat={}{0:0}%}"></TextBlock>
</Grid>
Metro Style과 함께 일반 막대를 사용하려는 경우:
<Grid>
<ProgressBar x:Name="pbar" Value="50" Height="20" Style="{StaticResource MetroProgressBar}"></ProgressBar>
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding ElementName=pbar, Path=Value, StringFormat={}{0:0}%}"></TextBlock>
</Grid>
스타일 없이 동일:
<Grid>
<ProgressBar x:Name="pbar" Value="60" Height="20" Style="{x:Null}"></ProgressBar>
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding ElementName=pbar, Path=Value, StringFormat={}{0:0}%}"></TextBlock>
</Grid>
무슨 일이 일어나고 있습니까?
진행 표시줄이 있고 그 위에 텍스트를 배치하기만 하면 됩니다.진행 표시줄을 원하는 대로 사용합니다.진행 표시줄을 그리드에 넣고 텍스트 블록을 배치합니다.그런 다음 원하는 대로 텍스트를 입력하거나 진행률 표시줄에서 값인 현재 백분율을 가져올 수 있습니다.
언급URL : https://stackoverflow.com/questions/75924/text-on-a-progressbar-in-wpf
'source' 카테고리의 다른 글
Git에서 두 커밋 간에 변경된 줄 수를 계산하려면 어떻게 해야 합니까? (0) | 2023.05.12 |
---|---|
Git reset -- 원격 리포지토리에 하드 및 푸시 (0) | 2023.05.12 |
stackOverflow의 입력 태그와 같은 jQuery 자동 완성 태그 플러그인? (0) | 2023.05.12 |
Bash에서 파일 경로를 어떻게 정규화합니까? (0) | 2023.05.12 |
Angular에서 확인 대화 상자를 만드는 쉬운 방법은 무엇입니까? (0) | 2023.05.12 |