Невозможно скопировать текст в буфер обмена во время привязки - PullRequest
0 голосов
/ 12 марта 2012

У меня есть элемент textblock в приложении WPF, который привязан к комбинированному списку, и я хочу, чтобы текстовое значение текстового поля было скопировано в буфер обмена при нажатии кнопки, но я не могу получить текстовое значение в коде какЯ не могу использовать само имя текстового поля для ссылки на его свойства.Это продолжение моего предыдущего вопроса здесь Получение элемента XML из элемента Combobox код находится там, так что не стоит расширять вопрос, это простые две строки кода

<TextBox Grid.Column="1" 
    Text="{Binding SelectedItem.Value, ElementName=QueryChooser}" 
    Grid.ColumnSpan="2" Grid.Row="1" Height="200" HorizontalAlignment="Left" 
    Name="textBlock1"  VerticalAlignment="Top" Width="481" />

Ответы [ 2 ]

1 голос
/ 12 марта 2012

Во-первых, я бы порекомендовал изучить шаблон проектирования MVVM , если вы серьезно относитесь к разработке WPF. Если вы используете MVVM, то используйте MVVM framework . Это значительно облегчит вашу жизнь.

Во-вторых, вам нужен какой-то механизм для вызова глаголов в вашем контексте данных (модель представления в MVVM). WPF обеспечивает командование, а инфраструктуры MVVM предоставляют другие методы и варианты.

Если у вас есть этот механизм, у вас есть текст запроса в свойстве SelectedQuery, так что вы можете скопировать SelectedQuery.Value (строку) в буфер обмена.

0 голосов
/ 05 апреля 2012

записать событие CopyingCellClipboardContent в свой datagridTemplateColumn в xaml.В коде этого события напишите это,

if (dataGrid1.CurrentCell! = Null && dataGrid1.CurrentCell.Column == e.Column) {dataGrid1.SelectionUnit = Microsoft.Windows.Controls.DataGridSelectionUnit.Cell;e.Content = ((System.Data.DataRowView) (dataGrid1.CurrentCell.Item)). Row.ItemArray [4] .ToString ();} else e.Content = true;

Спасибо ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...