所以我有这个ListView
与自定义Column
Progress-Bar
:
<ListView Name="lvFiles">
<ListView.Resources>
<DataTemplate x:Key="MyDataTemplate">
<Grid Margin="0,0,0,0">
<ProgressBar
Name="progressBarColumn"
Maximum="100"
Value="{Binding Progress, UpdateSourceTrigger=PropertyChanged}"
Width="{Binding Path=Width, ElementName=ProgressCell}"
Margin="0,0,0,0"
Style="{StaticResource CustomProgressBar}" />
<TextBlock
Text="{Binding Path=Value, ElementName=progressBarColumn, StringFormat={}{0:N1}%}"
VerticalAlignment="Center"
HorizontalAlignment="Center"
FontSize="11.5"
Foreground="White"
Margin="0,-2,0,0"/>
</Grid>
</DataTemplate>
<ControlTemplate x:Key="ProgressBarTemplate">
<Label HorizontalAlignment="Center" VerticalAlignment="Center" />
</ControlTemplate>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=Text }"></Setter>
</Style>
</ListView.Resources>
</ListView>
风格
<Style x:Key="CustomProgressBar" TargetType="ProgressBar" >
<Setter Property="Template" >
<Setter.Value>
<ControlTemplate TargetType="ProgressBar">
<Border BorderBrush="#FF103766" BorderThickness="0" Background="#FF103766" CornerRadius="0" Padding="0">
<Grid x:Name="PART_Track">
<Rectangle x:Name="PART_Indicator" HorizontalAlignment="Left">
<Rectangle.Style>
<Style TargetType="Rectangle">
<Setter Property="Fill" Value="Gray"/>
<Style.Triggers>
<DataTrigger Value="100" Binding="{Binding Path=Value, RelativeSource={RelativeSource AncestorType=ProgressBar}}">
<Setter Property="Fill" Value="LightSeaGreen"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Rectangle.Style>
</Rectangle>
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
因此,如果我想创建多个Styles
并从代码行为中更改此Style
,是否可以?
答案 0 :(得分:0)
一行代码可以做到这一点:
progressBarColumn.Style = (Style)Application.Current.TryFindResource("CustomProgressBar");
如果您有多个自定义进度条样式,则只需替换&#34; CustomProgressBar&#34;在上面的代码中,无论你想要的进度条样式的名称是什么。
确保您的样式位于应用程序级别可见的字典(或位置)中。
答案 1 :(得分:0)
如果您使用DynamicResource
标记扩展程序:
Style="{DynamicResource CustomProgressBar}" />
...您可以在运行时轻松切换资源:
lvFiles.Resources["CustomProgressBar"] = Application.Current.Resources["yourOtherStyle"] as Style;
What's the difference between StaticResource and DynamicResource in WPF?