编辑:解决了
(我在ViewModel wrapper
中创建了另一个属性并绑定到该属性
我正在尝试绑定与ObservableCollection
绑定的DataGrid
无关的属性。其他列以他们应该的方式绑定,只是这一列我似乎无法开始工作。
我尝试使用RelativeSource AncestorType
绑定属性,直接绑定到DataContext
但没有运气。
XAML,我绑定的ObservableCollection
显然被称为MonthlyRecords
,它是不同类的集合,这是它应该的绑定方式。它是property
SelectedTenant.FullName
,它与让我悲伤的集合无关。
<DataGrid ItemsSource="{Binding MonthlyRecords}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Name">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<!--Trying to bind this Property in the next line-->
<TextBlock Text="{Binding Path=SelectedTenant.FullName}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Width="60" Header="Code" Binding="{Binding UpdateSourceTrigger=LostFocus, Path=TenantCode}" />
这是我试图绑定的属性的类。
public class Tenant
{
public Tenant()
{
}
public int Code { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public string FullName => LastName + " " + FirstName;
public string Section { get; set; }
public Tenant(int code, string lastName = null, string firstName = null, string section = null)
{
Code = code;
LastName = lastName;
FirstName = firstName;
Section = section;
}
}
这是我试图绑定到的ViewModel中的property
。
private Tenant _selectedTenant;
public Tenant SelectedTenant
{
get { return _selectedTenant; }
set
{
if (Equals(_selectedTenant, value)) return;
_selectedTenant = value;
OnPropertyChanged();
}
}
我还需要做些什么才能将其绑定到DataGrid
?
答案 0 :(得分:1)
<DataGridTextColumn Header="Name" Binding="{Binding Path=SelectedTenant.FullName, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"/>
编辑:
我已设置AutoGenerateColumns =“True”
<DataGrid ItemsSource="{Binding MonthlyRecords}" AutoGenerateColumns="True">
<DataGridTextColumn Header="Name" Binding="{Binding ElementName=ComboBoxTenant, Path=DisplayMemberPath}"/>