2013-05-28 3 views
0

Я связываю объект сущности к GridControlWPF рамки связывания сущность

{ 
     InitializeComponent(); 

     gridControl1.DataContext = from q in myEnt.item 
            from b in myEnt.item_type 
            where q.item_type_fk == b.item_type_id 
               select new { q.item_name, q.item,m_type}; 

    } 

, который работает хорошо. Я хочу показать связанные данные в текстовом поле, когда я нажимаю строку в элементе управления сеткой. Как я могу это сделать, я попытался это:

<TextBox Name="TextBox3" Text="{Binding Path=item_name}"/> 

не работает.

ответ

1

Попробуйте это (вы должны сказать TextBox точно, где найти item_name):

<TextBox Name="TextBox3" 
     Text="{Binding ElementName=gridControl1, Path=SelectedItem.item_name}"/> 

EDIT:

gridControl1 кажется DevExpress GridControl, который не имеет SelectedItem недвижимость (?). Согласно этой статье поддержки Change selected item through databinding, эта привязка может работать вместо (TableView.FocusedRow):

<TextBox Name="TextBox3" 
     Text="{Binding ElementName=tableView1, Path=FocusedRow.item_name}" /> 
+0

Это не работает. Мне нужно обратиться к объекту entity. Как отобразить поле, которое не включено в сетку? – user1065131

+0

Что значит? 'item_name' является одним из полей в сетке, не так ли? Если вы не видите ничего в TextBox, вы можете проверить окно «Выход» в Visual Studio и искать ошибки привязки при запуске вашего проекта. Кроме того, если вы разместите здесь больше XAML, возможно, будет легче увидеть, что происходит. – Sphinxxx

+0

Конечно, «gridControl1» должно быть именем DataGrid. Пожалуйста, напишите больше пользователя кода. –

0
<dxr:DXRibbonWindow 
x:Class="Eszkoz.MainWindow" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:local="clr-namespace:Eszkoz" 
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core" 
xmlns:dxr="http://schemas.devexpress.com/winfx/2008/xaml/ribbon" 
xmlns:dxb="http://schemas.devexpress.com/winfx/2008/xaml/bars" 
xmlns:dxbh="http://schemas.devexpress.com/winfx/2008/xaml/bars/internal" 
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors" 
xmlns:dxd="http://schemas.devexpress.com/winfx/2008/xaml/docking" 
Title="DXApplication" Height="700" Width="1100" 
SnapsToDevicePixels="True" UseLayoutRounding="True" 
dx:ThemeManager.ThemeName="Office2013" xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"> 
<dxr:DXRibbonWindow.Resources> 
    <dx:EntitySimpleDataSource x:Key="EntitySimpleDataSource" ContextType="local:eszkozEntities" dx:DesignDataManager.DesignData="{dx:DesignDataSettings RowCount=5, UseDistinctValues=True}" Path="eszkoz" /> 
</dxr:DXRibbonWindow.Resources> 

<dxb:BarManager x:Name="barManager" dxbh:BlendHelperForBarsAndRibbon.IsDesignControl="true"> 
    <DockPanel> 
     <dxd:DockLayoutManager x:Name="dockLayoutManager"> 
      <dxd:LayoutGroup> 
       <dxd:LayoutPanel ItemWidth="200" Caption="Navigation" Padding="1"> 
        <dxg:GridControl AutoPopulateColumns="True" Name="gridControl1" ItemsSource="{Binding}"> 
         <dxg:GridControl.View> 
          <dxg:TableView Name="tableView1" ShowTotalSummary="True" /> 
         </dxg:GridControl.View> 
        </dxg:GridControl> 
       </dxd:LayoutPanel> 
       <dxd:LayoutGroup Orientation="Vertical" ItemWidth="4*"> 
        <dxd:LayoutPanel Caption="MainView" ItemHeight="3*"> 
         <dxd:LayoutGroup Orientation="Vertical"> 
          <dxd:LayoutControlItem Caption="Layout Item"> 
           <TextBox Height="23" Name="TextBox3" Width="100" Margin="2" HorizontalAlignment="Left" Text="{Binding ElementName=gridControl1, Path=SelectedItem.item_name}"/> 
          </dxd:LayoutControlItem> 
         </dxd:LayoutGroup> 
        </dxd:LayoutPanel> 
        <dxd:LayoutPanel Caption="DetailView" ItemHeight="2*"></dxd:LayoutPanel> 
       </dxd:LayoutGroup> 
      </dxd:LayoutGroup> 
     </dxd:DockLayoutManager> 
    </DockPanel> 
</dxb:BarManager> 

+0

Я сам не использовал компоненты DevExpress, но я обновил свой ответ предложением. – Sphinxxx

+0

Мне нужно обратиться к объекту entity. Как отобразить поле, которое не включено в сетку? – user1065131

+0

Тогда я бы добавил объекты сущности в сетку, но делал только столбцы для того, что вы хотите отображать в сетке (я предполагаю, что вы можете установить «AutoPopulateColumns = false», а затем DevExpress имеет некоторый способ для вас сделать свой собственный набор столбцов). Таким образом, вы получите доступ к выбранному объекту объекта через «TableView.FocusedRow». – Sphinxxx

Смежные вопросы