Не удалось получить данные о ячейке в ячейке WPF DataGrid - PullRequest
0 голосов
/ 31 декабря 2018

У меня есть сетка данных с источником элемента, связанным с данными из базы данных. У него есть два шаблона данных с ограниченным значением с помощью преобразователя значений. (Я преобразовал идентификатор сотрудника (столбец frow1) в путь изображения с помощью преобразователя). Теперь я хочу показатьидентификатор сотрудника, когда пользователь дважды щелкает по ячейке с изображением. Когда я успешно запустил таблицу данных приложения, заполненную изображениями сотрудника.

До сих пор я пытался, как показано ниже, используя DataGridCellInfo, как показано в приведенном ниже коде.. Я установил CurrentCell = "{Binding CellInfo, Mode = TwoWay}" в сетке данных xamal. Здесь CellInfo является общедоступным свойством

    <DataGrid x:Name="dtGrid" AutoGenerateColumns="False"   
 Margin="0,0,0,0"  SelectionUnit="Cell" 
HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"           
SelectionMode="Single"  
CurrentCell="{Binding CellInfo, Mode=OneWayToSource}"   
 VerticalAlignment="Top" RowHeight="50" ColumnWidth="50"  
AlternatingRowBackground="{x:Null}"  AlternationCount="2" 
CanUserResizeRows="False" CanUserAddRows="False" CanUserDeleteRows="False" 
CanUserReorderColumns="False" CanUserResizeColumns="False" 
CanUserSortColumns="False" HeadersVisibility="None" 
GridLinesVisibility="None" HorizontalGridLinesBrush="{x:Null}" 
 VerticalGridLinesBrush="{x:Null}" >
   <DataGrid.Columns>
                  <DataGridTemplateColumn  Width="SizeToCells"  IsReadOnly="True" >     <DataGridTemplateColumn.CellTemplate >
                     <DataTemplate>
          <Button  Background="#FF1D5BBA"                                   
              PreviewMouseDoubleClick="Button_PreviewMouseDoubleClick"  >
                  <Image    Source="{Binding Path=frow1, 
                   Converter=StaticResource 
                  prfileconverter},  
                   Mode=Default}" />
         </Button>
                      </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>

Мой код:

private void Button_PreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
    { 
       MessageBox.Show(CellInfo.ToString())
    }


private DataGridCellInfo _cellInfo;
public DataGridCellInfo CellInfo
    {
        get {


               return _cellInfo;
           }
        set
           {
            _cellInfo = value;
            OnPropertyChanged("CellInfo");
                     //this is to refresh through  INotifyPropertyChanged    
         }
    }

Здесь яя застрял с тем, как показать идентификатор сотрудника, когда я делаю MouseDoubleClick на ячейку. Когда я дважды щелкаю по ячейке, я получаю окно сообщения, говорящее «System.Windows.Control.DataGridCellInfo». Я не получаю элемент ячейки (идентификатор сотрудника)

1 Ответ

0 голосов
/ 03 января 2019

Проблема в том, что DataGridTemplateColumn не имеет доступа к CellInfo.Item (он не существует)

Самый простой способ сделать это через ваше событие Button_PreviewMouseDoubleClick, связавПрисвойте свойству Button свойство Button для ваших данных, а затем получите к нему доступ в обработчике событий следующим образом:

<Button PreviewMouseDoubleClick="Button_PreviewMouseDoubleClick" Tag="{Binding Path=frow1}">....

Затем в обработчике событий выполните следующее:

private void Button_PreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
   var button = (Button)sender; 
   MessageBox.Show(button.Tag.ToString());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...