簡體   English   中英

WPF:在UserControl內綁定DataGrid

[英]WPF : Bind DataGrid Inside UserControl

我有一個用戶控件,里面將有幾個數據網格。 想要使綁定正常工作,但由於某些原因未顯示內容:

 UserControls.iMRxMRDataGrid ucObj = new UserControls.iMRxMRDataGrid();
 ChartDescriptiveClass.PartName="test";
 ucObj.DataContext = ChartDescriptiveClass;

內部用戶控件:

  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綁定有效。(添加了此功能以測試綁定是否完全正常)。

謝謝!

綁定DataGridTextColumn會將列綁定到DataGrid.ItemsSource中的屬性,因此您必須設置ItemsSource或重新考慮所需的內容。

<DataGrid x:Name="iMRxMRDataGri" ItemsSource={Binding SomeCollection} DataContext="{Binding DataContext,ElementName=iMRxMRDataUC}" AutoGenerateColumns="False">
        <DataGrid.Columns>               
            <DataGridTextColumn Binding="{Binding PropertyInDataModelOfSomeCollection}" Width="Auto" Header="PartName" IsReadOnly="True" />          
        </DataGrid.Columns>
    </DataGrid>  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM