使用 CellTemplateSelector 更改 GridView 单元格背景

发布于 2024-10-21 18:49:16 字数 800 浏览 2 评论 0原文

我正在使用 CellTemplateSelector 来更改具有特定值的特定单元格的单元格背景颜色。但是,我无法获取单元格背景颜色来填充单元格;它拥抱内容。这是我的标记:

<DataTemplate x:Key="Template1">
  <Grid Background="#C0D9AF">
    <TextBlock Text="{Binding Path=Value}" />
  </Grid>
</DataTemplate>

<DataTemplate x:Key="Template2">
  <Grid Background="#FFFCCF">
    <TextBlock Text="{Binding Path=Value}" />
  </Grid>
</DataTemplate>

和我的代码:

private class CellTemplateSelector : DataTemplateSelector
{
  public override DataTemplate SelectTemplate(object item,
                                              DependencyObject container)
  {
    return ((FrameworkElement)container).FindResource(condition 
           ? "Template1"
           : "Template2") as DataTemplate;
  }
}

I'm using a CellTemplateSelector to change the cell background color of specific cells with specific values. However, I can't get the cell background color to fill the cell; it hugs the content. Here's my markup:

<DataTemplate x:Key="Template1">
  <Grid Background="#C0D9AF">
    <TextBlock Text="{Binding Path=Value}" />
  </Grid>
</DataTemplate>

<DataTemplate x:Key="Template2">
  <Grid Background="#FFFCCF">
    <TextBlock Text="{Binding Path=Value}" />
  </Grid>
</DataTemplate>

And my code:

private class CellTemplateSelector : DataTemplateSelector
{
  public override DataTemplate SelectTemplate(object item,
                                              DependencyObject container)
  {
    return ((FrameworkElement)container).FindResource(condition 
           ? "Template1"
           : "Template2") as DataTemplate;
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

魔法少女 2024-10-28 18:49:16

更改模板以使用具有背景颜色的只读文本框,并将 ListViewItem 的 Horizo​​ntalContentAlignment 设置为 Stretch:

<DataTemplate x:Key="Template1">
    <Grid>
        <TextBox Text="{Binding Value}"  Background="Crimson" IsReadOnly="True" />
    </Grid>
</DataTemplate>
<DataTemplate x:Key="Template2">
    <Grid>
        <TextBox Text="{Binding Value}" Background="HotPink" IsReadOnly="True" />
    </Grid>
</DataTemplate>


<ListView.ItemContainerStyle>
  <Style TargetType="ListViewItem">
    <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
  </Style>
</ListView.ItemContainerStyle>

您还可以查看此 回答了解更多信息。

Change your templates to use a a read-only TextBox with a Background color, and set HorizontalContentAlignment to Stretch for the ListViewItem:

<DataTemplate x:Key="Template1">
    <Grid>
        <TextBox Text="{Binding Value}"  Background="Crimson" IsReadOnly="True" />
    </Grid>
</DataTemplate>
<DataTemplate x:Key="Template2">
    <Grid>
        <TextBox Text="{Binding Value}" Background="HotPink" IsReadOnly="True" />
    </Grid>
</DataTemplate>


<ListView.ItemContainerStyle>
  <Style TargetType="ListViewItem">
    <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
  </Style>
</ListView.ItemContainerStyle>

You can also take a look at this answer for more information.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文