WPF数据网格,如何绑定自定义数据列上的属性

3

我有一个像这样的WPF数据表格:

<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>

它的ItemSource属性绑定到我的DataContext中代理商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的一列。我遇到了绑定WorkBalance属性的问题,它绑定到一个自定义列,以下是我的列模板:

<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>

我无法弄清如何将我的滑块的Value属性绑定到我的列表的WorkBalance属性。有什么建议吗?


尝试使用Path="ItemSource.(local:Agent.WorkBalance)" 替换路径表达式,并在本地命名空间中设置 xmlns 定义,其中 Agent 被声明。 - MaMazav
1个回答

2
DataTemplate中,DataContext就是项目本身,所以你可以直接绑定到WorkBalance
Value="{Binding Path=WorkBalance}"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接