首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么绑定在WPF的DataGrildTemplateColumn上不起作用?

为什么绑定在WPF的DataGrildTemplateColumn上不起作用?
EN

Stack Overflow用户
提问于 2017-05-16 18:59:08
回答 2查看 70关注 0票数 0

我在WPF DataGrid (MVVM)中定义了一个UserControl。我试图使用DataGridTemplateColumns来定义DataGrid内容。

这里是我的ViewModel:中的数据

代码语言:javascript
运行
复制
public class CompanyClass
{
   public string Name { get; set;}
   public string Location { get; set; }
}

public ObservableCollection<CompanyClass> CompanyList = // Fill with Data;

这里是DataGrid定义在XAML中的样子:

代码语言:javascript
运行
复制
<Grid Name="SampleGrid"
      Width="{Binding ActualWidth, ElementName=NegativeAccountsBalances}" 
      HorizontalAlignment="Stretch" 
      VerticalAlignment="Stretch">
  <DataGrid Name="SampleDataGrid"
            AutoGenerateColumns="False"
            ItemsSource="{Binding CompanyList}"
            Width="{Binding Path=ActualWidth, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Grid,AncestorLevel=1}}"
            IsReadOnly="True"
            SelectionMode="Extended"
            SelectionUnit="CellOrRowHeader"
            HorizontalScrollBarVisibility="Auto"  
            VerticalScrollBarVisibility="Auto">
    <DataGrid.Columns>
      <DataGridTemplateColumn Width="SizeToCells" IsReadOnly="True">
        <DataGridTemplateColumn.CellTemplate>
          <DataTemplate>
            <StackPanel Orientation="Vertical">
              <TextBlock Name="txtCompanyName" Text="{Binding Path=Name}" Height="200" Width="200"/>
              <TextBlock Text="{Binding Location}" Height="20" Width="20"/>
            </StackPanel>
          </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
      </DataGridTemplateColumn>
    </DataGrid.Columns>
  </DataGrid>
</Grid>

由于某些原因,我似乎无法使绑定为DataTemplate中的DataTemplate控件工作。我正在将ItemSource设置为包含在ViewModel中的"Company“集合。

我在这里错过了什么/做错了什么?

我在VS输出窗口中没有看到任何错误。如果我试图将一个TextBlock绑定到一个假值,我仍然没有看到任何错误。不知何故,我似乎没有正确地设置我的装订。

谁能给我指明正确的方向吗?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2017-05-16 22:54:57

CompanyList是一个领域。你不能绑定到田里。只能绑定到属性。它需要一个吸气器和一个策划者。

票数 0
EN

Stack Overflow用户

发布于 2017-05-17 12:51:05

请确保只在构造函数中或通过使用在CompanyList中引入的初始化器语法初始化CompanyList属性一次:

代码语言:javascript
运行
复制
public class ViewModel
{
    public ViewModel()
    {
        CompanyList = new ObservableCollection<CompanyClass>();
        //popuoate collection...
        CompanyList.Add(new CompanyClass() { Name = "test...." });
    }
    public ObservableCollection<CompanyClass> CompanyList { get; private set; }
}

C#6+:

代码语言:javascript
运行
复制
public ObservableCollection<CompanyClass> CompanyList { get; } = new ObservableCollection<CompanyClass>();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44009496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档