【问题标题】:WPF DataGrid, How to bind property on custom DataGridColumnWPF DataGrid,如何在自定义 DataGridColumn 上绑定属性
【发布时间】:2014-01-03 20:32:51
【问题描述】:

我有一个这样的 WPF DataGrid:

<DataGrid x:Name="dtgAgent"
          ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=Window, AncestorLevel=1}, Path=DataContext.AgentList}"
                          AutoGenerateColumns="False">
          <DataGrid.Columns>
              <DataGridTextColumn Header="Agent Name" MaxWidth="140" MinWidth="80" SortDirection="Ascending" Width="100" CanUserReorder="False" IsReadOnly="True" Binding="{Binding Path=AgentName}"/>
              <DataGridTextColumn Header="Status"  Binding="{Binding Path=Status}" MinWidth="60"/>
              <DataGridCheckBoxColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False" Header="Use" MaxWidth="40" MinWidth="40" Binding="{Binding Path=Used}" />
              <DataGridTemplateColumn CellTemplate="{StaticResource sliderTemplate}" CanUserReorder="False" CanUserResize="False" Width="140" Header="Work Balance (%)"/>
    </DataGrid.Columns>
</DataGrid>

它的ItemSourceproperty 绑定到我的DataContext 中Agent 的List,这里是Agent 类的代码:

public class Agent
{
    public String AgentName { get;set; }
    public String Status { get; set; }
    public Boolean Used { get; set; }
    public Int16 WorkBalance { get; set; }

    public Agent(String AgentName)
    {
        this.AgentName = AgentName;
        Status = "Online";
        Used = true;
        WorkBalance = 50;
    }
}

此类的每个属性都绑定到我的 DataGrid 的一列。我在绑定到自定义列的WorkBalanceproperty 时遇到问题,这是我的列模板:

<DataTemplate x:Key="sliderTemplate">
    <Grid>
                <Slider HorizontalAlignment="Stretch" Minimum="0" Maximum="100" 
                        Value="{Binding Path=ItemSource.WorkBalance,RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>
    </Grid>
</DataTemplate>

我不知道如何将 Slider 的 Valueproperty 绑定到列表的 WorkBalanceproperty。有什么建议 ?

【问题讨论】:

  • 尝试用 Path="ItemSource.(local:Agent.WorkBalance) 替换 Path 表达式,并为声明 Agent 的本地命名空间设置 xmlns 定义。

标签: c# wpf data-binding datagrid


【解决方案1】:

DataTemplate中的DataContext是item,所以你可以绑定到WorkBalancedirectly:

Value="{Binding Path=WorkBalance}"

【讨论】:

    猜你喜欢
    • 2010-10-14
    • 1970-01-01
    • 2017-02-07
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 2016-10-28
    • 2012-10-04
    • 2011-12-14
    相关资源
    最近更新 更多