هل هناك حقا أي وسيلة لمتابعة بيانات الوالد العلاقة في xaml ملزمة ؟

StackOverflow https://stackoverflow.com/questions/202990

سؤال

لنفترض أن لدي مجموعة بيانات مع هذين الخالد الجداول:الموظف والنظام
Emp -> ID, Name
Ord -> شيء أمر آخر ، EmpID
و بالنسبة Rel:Ord (EmpID) -> Emp (ID)

يعمل كبيرة في مستوى الماجستير/تفاصيل السيناريو
(إظهار الموظفين ، اتبع أسفل العلاقة ، وتظهر ذات الصلة أوامر) ،
ولكن ماذا عندما وان لا تذهب في الطريق المعاكس (عرض Ord الجدول Emp.اسم)?

شيء من هذا القبيل:

<stackpanel>   // with datacontext set from code to dataset.tables["ord"]
   <TextBox Text="{Binding Something}"/>
   <TextBox Text="{Binding Anotherthing}"/>
   <TextBox Text="{Binding ???}"/> // that's my problem, how to show related Emp.Name 
</stackpanel>

أي أفكار ؟ أنا يمكن أن تخلق قيمة المحول, ولكن إذا كنت wan't استخدام البيانات سبيل المثال التي أحصل عليها من الوالدين وحدة تحصل عليه صعبة.

هل كانت مفيدة؟

المحلول

إذا كنت ترغب في مزامنة محتويات عدة ضوابط ، سوف تحتاج إلى أن يكون لهم حصة نفس الملزمة المصدر من خلال DataContext تعيين على الأصل مشتركة التحكم.هنا مثال:

<StackPanel>
    <StackPanel.Resources>
        <ObjectDataProvider x:Key="ds" ObjectType="{x:Type mynamespace:MyDataSet}" />
    </StackPanel.Resources>

    <!-- We set the data context to the collection of rows in the table -->
    <StackPanel DataContext="{Binding Source={StaticResource ds}, Path=USERS.Rows}">
        <ListBox ItemsSource="{Binding}"
                 DisplayMemberPath="NAME"
                 IsSynchronizedWithCurrentItem="True" />
        <TextBox Text="{Binding Path=NAME}"/>
        <TextBox Text="{Binding Path=COUNTRIESRow.NAME}"/>
    </StackPanel>
</StackPanel>

وضع IsSynchronizedWithCurrentItem الملكية 'True' سوف يسبب ListBox.SelectedItem الملكية أن تكون متزامنة تلقائيا مع CollectionView.CurrentItem الملزمة المصدر الذي هو جمع صفوف مجموعة في DataContext.وهذا يعني أن هناك حاليا الصف المحدد في مربع القائمة تصبح ملزمة مصدر عنصري تحكم مربع نص.

نصائح أخرى

على افتراض أن كنت تستخدم المكتوبة بشدة DataSet من أجل ربط مربع نص إلى 'EmpRow.اسم' عقار, سيكون لديك على الأرجح تعرض على أنها مكان الإقامة على OrdDataTable' الفئة.

منذ Visual Studio يولد كتابة البيانات رمز مع فئات جزئية, هل يمكن إضافة خاصية 'OrdDataTable' الفئة بهذه الطريقة:

using System.Data;

public partial class OrdDataTable : DataTable
{
    public string EmpName
    {
        get { return this.EmpRow.Name; }
    }
}

ثم هل سيكون قادرا على ربط 'EmpName' ممتلكات 'OrdDataTable' الكائن في سياق البيانات.

ما هو DataContext اثنين مربع نص الضوابط ؟
الثاني ملزمة للعمل DataContext يجب أن يتم تعيين إلى مثيل 'USERSDataTable'.لأن هذه هي الواردة في مجموعة في مجموعة البيانات ، يجب أن أقول صراحة الجدول الذي تريد ربط.شيء من هذا القبيل:

<StackPanel>
    <StackPanel.Resources>
        <ObjectDataProvider x:Key="ds" ObjectType="{x:Type mynamespace:MyDataSet}" />
    </StackPanel.Resources>

    <!-- Notice we set the data context to the first item in the array of tables -->
    <StackPanel DataContext="{Binding Source={StaticResource ds}, Path=USERS[0]}">
        <TextBox Text="{Binding NAME}"/>
        <TextBox Text="{Binding COUNTRIESRow.NAME}"/>
    </StackPanel>
</StackPanel>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top