gpt4 book ai didi

c# - 有条件地设置 GridViewColumn 单元格模板

转载 作者:行者123 更新时间:2023-11-30 15:35:07 25 4
gpt4 key购买 nike

我有一个 View DisplayTestsView.cs,在那个 View 中我有

<ListView ItemsSource="{Binding SelectedTechnician.Tests}"
SelectedItem="{Binding SelectedTest}" x:Name="AvailableTestsListView" Height="140">
<ListView.View>
<GridView>
<GridViewColumn Header="Id" Width="auto" DisplayMemberBinding="{Binding Id}"/>
<GridViewColumn Header="Test" Width="auto" DisplayMemberBinding="{Binding TestTypeName}"/>
<GridViewColumn Header="Status" Width="auto" DisplayMemberBinding="{Binding StutusTypeName}"/>
</GridView>
</ListView.View>
</ListView>

我希望 StatusTypeName 单元格文本的 TextColor 是基于条件的特定颜色。例如,如果 StatusTypeName 等于“Incomplete”,那么我希望单元格中的文本变为红色。

从 View 中可以看到的测试(实体)列表是 SelectedTechnician.Tests,而 SelectedTechnician 是我的 ViewModel (DisplayTestsViewModel) 上的一个属性。

我想人们必须使用 GridViewColumn 上的 CellTemplate 属性,但对如何有条件地操作模板(通常)知之甚少,我不确定从哪里开始。

即使 CellTemplate 与它无关,我如何根据与上述类似的条件有条件地设置 GridViewColumn 单元格的文本以更改颜色?

最佳答案

您是正确的,CellTemplate 是实现颜色更改的正确位置。

你可以这样做(警告 - 未经测试):

<ListView ItemsSource="{Binding SelectedTechnician.Tests}"
SelectedItem="{Binding SelectedTest}" x:Name="AvailableTestsListView" Height="140">
<ListView.View>
<GridView>
<GridViewColumn Header="Id" Width="auto" DisplayMemberBinding="{Binding Id}"/>
<GridViewColumn Header="Test" Width="auto" DisplayMemberBinding="{Binding TestTypeName}"/>
<GridViewColumn Header="Status" Width="auto">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock
Text="{Binding StatusTypeName}"
Foreground="{Binding StatusTypeName, Converter={StaticResource StatusTypeNameToBrushConverter}}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridView>
</ListView.View>
</ListView>

StatusTypeNameToBrushConverter 会是这样的:

public class StatusTypeNameToBrushConverter : IValueConverter
{
public object Convert(
object value, Type targetType, object parameter, CultureInfo culture)
{
var statusTypeName = (string)value;
switch (statusTypeName)
{
case "Incomplete":
return Brushes.Red;
default:
return Brushes.Black;
}
}

public object ConvertBack(
object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}

关于c# - 有条件地设置 GridViewColumn 单元格模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15350508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com