none
DataGridTextColumn的Foreground绑定问题 RRS feed

  • 问题

  • <DataGrid Grid.Row="1" Name="dgQuote" AutoGenerateColumns="False"  
                               IsReadOnly="True" GridLinesVisibility="None" HeadersVisibility="Column" >
                                                    <DataGrid.Columns>
                                <DataGridTextColumn  Binding="{Binding name}"  Foreground="{Binding namecol}"  Header="名称"  />
                                <DataGridTextColumn  Binding="{Binding age}" Foreground="{Binding agecol}" Header="年纪"/>
                            </DataGrid.Columns>
                        </DataGrid>

    public class dgData
        {
            public string name{get;set;}
            public int age{get;set;}
            public Color namecol { get; set; }
            public string agecol { get; set; }
        }
    void MainWindow_Loaded(object sender, RoutedEventArgs e)
            {
                datalist.Add(new dgData() { name = "a", age = 12, namecol = Colors.Red, agecol = "Red" });
                datalist.Add(new dgData() { name = "b", age = 13, namecol = Colors.Red, agecol = "Red" });
                datalist.Add(new dgData() { name = "c", age = 14, namecol = Colors.Red, agecol = "Red" });
                datalist.Add(new dgData() { name = "d", age = 15, namecol = Colors.Red, agecol = "Red" });
                dgQuote.ItemsSource = datalist;
            }
    请问,为什么我的DataGridTextColumn的Foreground一直都是黑色的,要怎么绑定?
    2012年3月13日 6:03

答案

  • 你要对DataGridCell进行样式绑定,而不是Column, WPF DataGrid在运行时是没有Column这个Visual元素的。

        <DataGrid ItemsSource="{Binding}">
          <DataGrid.CellStyle>
            <Style TargetType="{x:Type DataGridCell}">
              <Setter Property="Foreground" Value="{Binding ...}"/>
            </Style>
          </DataGrid.CellStyle>
        </DataGrid>


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 小携 2012年3月14日 8:08
    • 取消答案标记 小携 2012年3月14日 8:08
    • 已标记为答案 小携 2012年3月14日 8:09
    2012年3月14日 4:10
    版主

全部回复

  • 你要对DataGridCell进行样式绑定,而不是Column, WPF DataGrid在运行时是没有Column这个Visual元素的。

        <DataGrid ItemsSource="{Binding}">
          <DataGrid.CellStyle>
            <Style TargetType="{x:Type DataGridCell}">
              <Setter Property="Foreground" Value="{Binding ...}"/>
            </Style>
          </DataGrid.CellStyle>
        </DataGrid>


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 小携 2012年3月14日 8:08
    • 取消答案标记 小携 2012年3月14日 8:08
    • 已标记为答案 小携 2012年3月14日 8:09
    2012年3月14日 4:10
    版主
  • 谢谢....

    2012年3月14日 8:09