列表框背景中的进度条?

时间:2013-06-07 19:25:14

标签: c# wpf listbox progress-bar

我有以下列表框:

    <ListBox Margin="5" Grid.Column="0" Name="ListboxSelectUpdate">
        <ListBox.ItemTemplate>
            <DataTemplate>

                <ProgressBar Visibility="Visible">
                    <ProgressBar.Style>
                        <Style TargetType="{x:Type ProgressBar}">
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding Progress}" Value="0">
                                    <Setter Property="Visibility" Value="Hidden"></Setter>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </ProgressBar.Style>
                    <ProgressBar.Template>
                        <ControlTemplate>
                            <AdornedElementPlaceholder Name="adorner">
                                <Grid>
                                    <TextBlock Width="70" FontStyle="Italic" FontWeight="Bold">Version:</TextBlock>
                                    <TextBlock FontWeight="Bold" Text="{Binding Path=Version}"></TextBlock>
                                </Grid>
                            </AdornedElementPlaceholder>
                        </ControlTemplate>
                    </ProgressBar.Template>
                </ProgressBar>

            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

在此列表框中,我想显示程序的不同可用更新/版本。 现在我想在ItemTemplate的背景中有一个Progressbar,只有在Progess-Property(int)不为零时才可见。 (因此,如果更新开始,则Progress-Property不为零,并且Progressbar应该可见)。 我的问题:我看不到任何东西,没有进度条和没有TexbBlocks。 我的错误在哪里?

1 个答案:

答案 0 :(得分:0)

你的模板有点不对劲。您误用了AdornedElementPlaceholder元素,根据MSDN,该元素仅应用于验证模板。你不把东西放在AdornedElementPlaceholder里面,它就是装饰控制的地方。如果要将控件叠加在一起,请使用Grid。请尝试使用此ListBox模板:

<ListBox Margin="5" ItemsSource="{Binding Path=MyList}">
  <ListBox.ItemContainerStyle>
      <Style TargetType="{x:Type ListBoxItem}">
          <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
      </Style>
  </ListBox.ItemContainerStyle>
  <ListBox.ItemTemplate>
      <DataTemplate>
          <Grid>
              <ProgressBar Minimum="0" Maximum="100" Value="{Binding Progress, Mode=OneWay}">
                  <ProgressBar.Style>
                      <Style TargetType="{x:Type ProgressBar}">
                          <Style.Triggers>
                              <DataTrigger Binding="{Binding Progress}" Value="0">
                                  <Setter Property="Visibility" Value="Hidden"/>
                              </DataTrigger>
                          </Style.Triggers>
                      </Style>
                  </ProgressBar.Style>
              </ProgressBar>
              <StackPanel Orientation="Horizontal">
                  <TextBlock Width="70" FontStyle="Italic" FontWeight="Bold">Version:</TextBlock>
                  <TextBlock FontWeight="Bold" Text="{Binding Path=Version}"/>
              </StackPanel>
          </Grid>
      </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>