У меня есть usercontrol, у которого будет несколько datagrids внутри. Хотите, чтобы получить привязку к работе, но по какой-то причине, содержимое не отображается:WPF: Bind DataGrid Inside UserControl
UserControls.iMRxMRDataGrid ucObj = new UserControls.iMRxMRDataGrid();
ChartDescriptiveClass.PartName="test";
ucObj.DataContext = ChartDescriptiveClass;
внутри UserControl:
public partial class iMRxMRDataGrid : UserControl
{
public iMRxMRDataGrid()
{
InitializeComponent();
DataContext = this;
}
}
XAML:
<UserControl x:Name="iMRxMRDataUC" x:Class="SPCLibrary.UserControls.iMRxMRDataGrid"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
>
<Grid >
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<DataGrid x:Name="iMRxMRDataGri" DataContext="{Binding DataContext,ElementName=iMRxMRDataUC}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding PartName}" Width="Auto" Header="PartName" IsReadOnly="True" /> <!--This will not work-->
</DataGrid.Columns>
</DataGrid>
<TextBlock Grid.Row="1" Text="{Binding Path=DataContext.PartName,ElementName=iMRxMRDataUC}" Width="40px" Height="30px"/> <!--This works-->
</Grid>
</UserControl>
Класс выглядит следующим образом (один элемент на имущество):
public class ChartDescriptiveValues
{
//iMR & xMR
public string PartName { get; set; }
public int Count { get; set; }
public double Average{ get; set; }
public double LSL { get; set; }
public double USL { get; set; }
}
Однако привязка textBlock работает. (Добавлено это, чтобы проверить, что привязка работает вообще).
Спасибо!
Хорошо, дело в том, что я действительно не знаю, как это сделать. У меня есть класс, который я установил в UserControl.DataContex = MyClass. Теперь мне нужно связать содержимое с DataGrid, который является дочерним элементом usercontrol. – Raunts
@Raunts Вы устанавливаете DataContext для пользовательского контроля, поэтому DataContext для DataGrid не требуется. Например, Text = "{Binding PartName}" будет работать – galakt
.. не работает .. :( – Raunts