进度条在列表框背景

本文关键字:背景 列表 | 更新日期: 2023-09-27 18:17:39

我有以下列表框:

    <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的背景中有一个进度条,只有在progress - property (int)不为零时才可见。(因此,如果更新开始,进度属性不为零,进度条应该是可见的)。我的问题是:我看不到任何东西,既没有进度条,也没有texblock。我错在哪里?

进度条在列表框背景

你的模板有点错。您滥用了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>