上下文:一个C#4.0 WPF应用程序,其数据网格有一个显示进度条的TemplateColumn。
如何让网格仅根据条件显示某些项目的进度条?
也许可以选择收听事件并隐藏细胞/将visibile设置为false。
这就是它现在的样子(所有项目都显示进度条):
<UserControl.Resources>
<DataTemplate x:Key="PotentialDataTemplate">
<Grid Width="70">
<ProgressBar
Height="12"
VerticalAlignment="Center"
Value="{Binding Path=Potential, Mode=OneWay}" />
</Grid>
</DataTemplate>
</UserControl.Resources>
<DataGrid x:Name="dataGrid"
ItemsSource="{Binding Path=Items}"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn
Header="{Binding Source={x:Static text:TextBindingProvider.Instance}, Path=CompendiumHeaderPotential}"
Width="Auto"
MinWidth="80"
CellTemplate="{StaticResource PotentialDataTemplate}"
IsReadOnly="true"
SortMemberPath="Potential" />
</DataGrid.Columns>
</DataGrid>
答案 0 :(得分:2)
根据条件的可见性,您有几个选项。如果您有一个单独的属性,例如“IsPotentialVisible”,则可以使用BooleanToVisibilityConverter将其绑定到进度条的Visibility属性。
接下来,如果它是一个简单的条件,例如“当潜在= = 0时隐藏”,那么你可以创建一个处理这种情况的DataTrigger。
否则,您还可以创建一个自定义转换器,根据所需的输入属性/参数来显示可见性。
答案 1 :(得分:2)
刚刚找到答案,我只需添加Visibility属性并将其绑定到ViewModel中的某些条件逻辑。
Visibility = "{Binding Path=ShowPotentialBar, Mode=OneWay}
所以:
<Grid Width="70">
<ProgressBar
Height="12"
VerticalAlignment="Center"
Value="{Binding Path=Potential, Mode=OneWay}"
Visibility = "{Binding Path=ShowPotentialBar, Mode=OneWay}" />
</Grid>