Текст обновления C # WPF Progress Bar ControlTemplate - PullRequest
0 голосов
/ 29 октября 2010

Я создал шаблон элемента управления для индикатора выполнения, который включает в себя текстовый блок, в который я хочу поместить обновление текста на основе% загруженного файла.

У меня нет проблем с получением% и т. Д. Я просто хочу узнать, как из кода c # я нацеливаюсь на текстовый блок.

Вот мой контрольный шаблон

<Style TargetType="{x:Type ProgressBar}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ProgressBar}">
                <Grid>
                    <Rectangle Stroke="#FF000000" RenderTransformOrigin="0.5,0.5" x:Name="PART_Track" RadiusX="5" RadiusY="50">
                        <Rectangle.Fill>
                            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                <GradientStop Color="White" Offset="0" />
                                <GradientStop Color="Gray" Offset="1"/>
                            </LinearGradientBrush>
                        </Rectangle.Fill>
                    </Rectangle>

                    <Rectangle Stroke="#FF000000" RenderTransformOrigin="0.5,0.5" x:Name="PART_Indicator" HorizontalAlignment="Left" RadiusX="5" RadiusY="50">
                        <Rectangle.Fill>
                            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                <GradientStop Color="#FF023501" Offset="1.0"/>
                                <GradientStop Color="#FFB6F9B4" Offset="0"/>
                            </LinearGradientBrush>
                        </Rectangle.Fill>
                    </Rectangle>
                    <Viewbox>
                        <TextBlock TextAlignment="Center" Background="Transparent" FontFamily="Times" Foreground="Black" x:Name="ProgressText" Margin="2,2,2,2">Test
                        </TextBlock>
                    </Viewbox>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Похоже, на моем экране по какой-то причине не отображается весь этот код, в любом случае, я пытаюсь настроить таргетинг на TextBlock x: Name "ProgressText"

1 Ответ

1 голос
/ 29 октября 2010

Вы пытались связать текст со значением в выпадающем списке? Вид

<TextBlock TextAlignment="Center" Foreground="Black" x:Name="ProgressText"
           Margin="2,2,2,2"
           Text={TemplateBinding Value,
                                 Converter={StaticResource DoubleToPercent}}/>

Конечно, вам потребуется указать конвертер, но в качестве доказательства концепции вы можете попробовать его без него.

Edit:
Вы должны будете использовать мультисвязывание, поскольку ваше процентное значение также зависит от минимума и максимума:

<TextBlock TextAlignment="Center" Foreground="Black" x:Name="ProgressText"
           Margin="2,2,2,2">
    <TextBlock.Text>
        <MultiBinding Converter="{StaticResource DoubleToPercent}">
            <TemplateBinding Path="Value" />
            <TemplateBinding Path="Minimum" />
            <TemplateBinding Path="Maximum" />
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

Отказ от ответственности: я не пробовал этот код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...