Добавление ссылки на TextBox вручную в WPF - PullRequest
3 голосов
/ 16 ноября 2011

В следующем коде WPF

//class level Variables
public TextBox _txtDef = new TextBox(); 
public TextBox _txtComment = new TextBox();

//Events
private void OnCommentsMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    _txtComment = sender as TextBox;
}

private void OnDefinitionMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    _txtDef = sender as TextBox;
}

Разметка

<WPFtoolkit:DataGridTemplateColumn x:Name="dgDefinition" Header="Definition" 
                                           Visibility="Collapsed" Width="300">
  <WPFtoolkit:DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
      <TextBlock Text="{Binding Path=Definition, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
    </DataTemplate>
  </WPFtoolkit:DataGridTemplateColumn.CellTemplate>
  <WPFtoolkit:DataGridTemplateColumn.CellEditingTemplate>
    <DataTemplate>
      <TextBox x:Name="txtDefinition" 
               Text="{Binding Path=Definition, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
               BorderThickness="0" ContextMenuOpening="DefinitionContextMenuOpen"
               MouseDoubleClick="OnDefinitionMouseDoubleClick">
      </TextBox>
    </DataTemplate>
  </WPFtoolkit:DataGridTemplateColumn.CellEditingTemplate>
</WPFtoolkit:DataGridTemplateColumn>

<WPFtoolkit:DataGridTemplateColumn x:Name="dgComment" Header="Comment" Width="200"
                                   Visibility="Collapsed">
  <WPFtoolkit:DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
      <TextBlock Text="{Binding Path=Comment, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
    </DataTemplate>
  </WPFtoolkit:DataGridTemplateColumn.CellTemplate>
  <WPFtoolkit:DataGridTemplateColumn.CellEditingTemplate>
    <DataTemplate>
      <TextBox x:Name="txtComment" 
               Text="{Binding Path=Comment, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
               BorderThickness="0" MouseDoubleClick="OnCommentsMouseDoubleClick">
      </TextBox>
    </DataTemplate>
  </WPFtoolkit:DataGridTemplateColumn.CellEditingTemplate>
</WPFtoolkit:DataGridTemplateColumn>   

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

Есть ли способ добавить ссылку на оба текстового поля, когда любое из двух событий запускается.

Спасибо

Ответы [ 2 ]

0 голосов
/ 16 ноября 2011

Хорошо,

Во-первых, ответ, я думаю, что эта статья:

http://blogs.msdn.com/b/wpfsdk/archive/2007/04/16/how-do-i-programmatically-interact-with-template-generated-elements-part-ii.aspx

вполне может дать вам то, что вам нужно. Но ...

Зачем вам нужно получить оба текстовых поля? Я хотел бы понять структуру кода немного больше, потому что то, что я вижу, кажется неправильным.

0 голосов
/ 16 ноября 2011

К сожалению, нет (ИМО).Вы написали шаблон данных.Это будет происходить для каждой записи в вашей сетке.Когда событие инициируется, вы получите TextBox в качестве отправителя, для которого было инициировано событие (как вы уже упоминали).Но я не вижу возможности получить экземпляр другого TextBox (он может быть еще не создан)

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